LeetCode问题图解-5

本文准备讲解1个算法编程问题, 这个算法编程问题来自LeetCode平台。不了解.LeetCode平台的读者可以阅读笔者文章(在线编程平台推荐-LeetCode)。问题的英文版本描述如下:

Flatten Nested List Iterator

Given a nested list of integers, implement an iterator to flatten it.

Each element is either an integer, or a list -- whose elements may also be integers or other lists.

Example 1:

Given the list[[1,1],2,[1,1]],

By calling next repeatedly until hasNext returns false, the order of elements returned by next should be:[1,1,2,1,1].

Example 2:

Given the list[1,[4,[6]]],

By calling next repeatedly until has Next returns false, the order of elements returned by next should be:[1,4,6].

问题的中文版本描述:

处理链表

给定一个列表,该列表中的每个元素要么是个列表,要么是整数。将其变成一个只包含整数的简单列表。

注意事项

如果给定的列表中的元素本身也是一个列表,那么该元素也可以包含列表。

样例

给定[1,2,[1,2]],返回[1,2,1,2]。

给定[4,[3,[2,[1]]]],返回[4,3,2,1]。

该问题要求对复合结构列表进行处理, 列表的元素可能为整数,也可能为整数。以目标列表[1,2,[1,2]]为例,首个元素为整数1,第2个元素为整数2,后1个元素为列表 [1,2]。列表 [1,2] 又含有2个整数元素。核心的算法需要用到递归处理:以目标列表 [4,[3,[2,[1]]]] 为例,简单说明算法。首先处理目标列表 [4,[3,[2,[1]]]],找出第1个整数元素并将该元素放入输出列表。处理目标列表 [4,[3,[2,[1]]]],找出第2个列表元素 [3,[2,[1]]] 。处理目标列表 [3,[2,[1]]],找出第1个整数元素并将该元素放入输出列表。处理目标列表 [3,[2,[1]]],找出第2个列表元素 [2,[1]]。处理目标列表 [2,[1]],找出第1个整数元素并将该元素放入输出列表。处理目标列表 [2,[1]],找出第2个列表元素 [1]。处理目标列表 [1],找出第1个整数元素并将该元素放入输出列表。

核心算法部分内容见下图:


LeetCode问题图解-5_第1张图片
核心算法部分内容

你可能感兴趣的:(LeetCode问题图解-5)