首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

算法:22.平面列表

https://www.lintcode.com/problem/flatten-list/description

描述

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

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

样例

给定 ,返回 。

给定 ,返回 。

挑战

请用非递归方法尝试解答这道题。

思路

递归是容易想到的。但是效率低,提交后是执行超时的。

递归实现

非递归实现也是容易想到,借助一个堆栈,在对象是列表时将对象的子对象按照从后到前的顺序压进栈。遍历处理堆栈元素,直到堆栈为空。

小结

非递归代码中如果将ArrayList list =newArrayList();中的ArrayList替换为LinkedList会造成执行超时。ArrayList 的添加效率还是略高于LinkedList的。

代码中由于将子列表拆分后压入堆栈,需要倒序遍历从后往前压入,这个地方可能是个费时的操作。因为不确定传入参数的List具体实现是那种。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180722G19OS300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券