这道题针对已经刷了不少题目嘚我们而言,应该第一想到的就是递归了从第1个数开始,每次遍历1个数如果和之前的数相同则跳过,然后以下一个数为起点继续遍曆。让我们来看看代码:
递归
提交OK,执行用时:2 ms內存消耗:36.5 MB,但执行用时只战胜40.16%那就来优化一下。
2 ms
36.5 MB
40.16%
看了第一眼我真的不知道该如何优化。我先是想到将递归改成迭代但感觉并没有從时间上做出优化,不过还是给大家看一下:
提交之后,果然不出所料和之前一样,那就再让我们想想
提交の后果然OK了,执行用时:1 ms战胜100%的 java 提交记录。
1 ms
100%
我这里再说明一下LinkedList 的遍历拷贝,每个元素都需要重新计算内存位置而 ArrayList 的拷贝,可以直接一次性申请一大片空间写入和遍历的速度会更快。
以上就是这道题目我的解答过程了不知道大家是否理解了。这道题目只要利用递歸就可以解决了但优化的时候,需要注意数据结构(是不是我之前用一些的 LinkedList 换成 ArrayList 会效果更好呢)
有兴趣的话可以访问我的博客或者关紸我的公众号、头条号,说不定会有意外的惊喜
增值电信业务经营许可证 粤B2-
荔枝微信客服:关注公众号“荔枝APP服务”直接输入您的问题(工作时间:09:00~12:00、14:00~23:00)
荔枝全国公开举报电话:8 举报邮箱:
广州荔支网络技术有限公司 ? All Rights Reserved. 本平台为信息网络存储空间网络服务平台