当前位置: 面试刷题>> 列表扁平化 (经典算法题500道)


题目描述补充

题目: 列表(或数组)扁平化

给定一个嵌套的列表(或数组),其中元素可以是整数、字符串或其他列表(数组),请编写一个函数将其扁平化,即返回一个不包含任何嵌套结构的列表(数组),所有元素都是原嵌套列表中的元素,并且保持原有的顺序。

示例输入

[1, [2, 3], [4, [5, 6]]]

示例输出

[1, 2, 3, 4, 5, 6]

示例代码

PHP

function flattenArray($arr) {
    $result = [];
    foreach ($arr as $item) {
        if (is_array($item)) {
            $result = array_merge($result, flattenArray($item));
        } else {
            $result[] = $item;
        }
    }
    return $result;
}

// 测试
$nestedArray = [1, [2, 3], [4, [5, 6]]];
$flatArray = flattenArray($nestedArray);
print_r($flatArray);

Python

def flatten_list(lst):
    result = []
    for item in lst:
        if isinstance(item, list):
            result.extend(flatten_list(item))
        else:
            result.append(item)
    return result

# 测试
nested_list = [1, [2, 3], [4, [5, 6]]]
flat_list = flatten_list(nested_list)
print(flat_list)

JavaScript

function flattenArray(arr) {
    let result = [];
    arr.forEach(item => {
        if (Array.isArray(item)) {
            result = result.concat(flattenArray(item));
        } else {
            result.push(item);
        }
    });
    return result;
}

// 测试
const nestedArray = [1, [2, 3], [4, [5, 6]]];
const flatArray = flattenArray(nestedArray);
console.log(flatArray);

码小课提醒: 在解决此类问题时,理解递归或迭代的思想非常关键。递归方法通过函数调用自身来处理嵌套结构,而迭代方法则通过循环和条件判断来逐步展开列表。此外,注意处理各种数据类型的兼容性,确保函数能够正确处理所有可能的输入情况。

码小课网站中有更多关于算法和数据结构的内容分享给大家学习,涵盖从基础到进阶的各种主题,欢迎大家访问学习。

推荐面试题