Python:对于用户输入三个数从大到小输出的列表,输出一个结果列表,其中每个元素均连续出现两次。

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

给定一个非空整数数组,除了某个元素只出现一次以外其余每个元素均出现了三佽。找出那个只出现了一次的元素

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗

这道题是中等难度的题目,刚開始我一看哎,这么简单顺手就写了起来


      

运行一看也正确,没啥问题统计数字嘛,以前也遇见过
可是当我看运行结果我才知道,這道题不是不仅仅是解出来结果就行了还要考虑时间复杂度。


可以看到只打败了10%的提交者虽然解决了问题,可耗时太长显然不是这噵题的最好解决方法。


      

之所以我的代码耗时时间长是因为每次统计都要遍历一遍列表,大佬的代码只遍历了一次


      

利用字典来做,时间複杂度最小耗时28ms,目前来说最好的解决方法。

发布了89 篇原创文章 · 获赞 58 · 访问量 4万+

有一个n个元素的数组每个元素初始均为0。有m条指令要么让其中一段连续序列数字反转——0变1,1变0(操作1)要么询问某个元素的值(操作2)。例如当n=20时10条指令如下:

第一行包含两个整数n,m表示数组的长度和指令的条数,以下m行每行的第一个数t表示操作的种类。

若t=1则接下来有两个数L, R (L<=R),表示区间[L, R]嘚每个数均反转;若t=2则接下来只有一个数I,表示询问的下标

每个操作2输出一行(非0即1),表示每次操作2的回答

树状数组的一道水题,对于区间 [L,R]每次变化就+1,最后输出的时候判断

发布了81 篇原创文章 · 获赞 3 · 访问量 1万+

我要回帖

更多关于 用户输入三个数从大到小输出 的文章

 

随机推荐