-
存在重复元素
判断是否存在重复元素
思路一,死做,时间O(n^2),空间O(1)
思路二,快排,再两两比较,时间O(nlogn),空间O(1)
思路三,哈希表,时间O(n),空间O(n) -
只出现一次的数字
除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
思路一,死做,加两层循环
思路二:哈希表,字典
思路三:异或运算,时间O(n),空间O(1) -
买卖股票的最佳时机 II
思路一:计算得到每个峰谷和峰顶,相减即是利润
思路二:简单地一次遍历,如果nums[i] > nums[i-1],即有利润。 -
两个数组的交集 II
连环三问:
如果给定的数组已经排好序呢?你将如何优化你的算法?
排好序,则通过比较排序,得出交集,时间O(m+n),空间O(1)。
如果 nums1 的大小比 nums2 小很多,哪种方法更优?
小很多,用哈希表,因为空间O(min(m,n)),空间复杂度省下了,时间O(m+n)。
如果 nums2 的元素存储在磁盘上,磁盘内存是有限的,并且你不能一次加载所有的元素到内存中,你该怎么办?
无法一次性加载,用归并排序,将元素分割成一些小块,排序完再合并。
- 两数之和
思路一:两层循环,时间O(n^2),空间O(1)
思路二:哈希表,第一次添加元素,第二遍寻找,时间O(n),空间O(n),或者边添加边查找
加入排序数组,就有另外的文章可做
- 旋转图像
转置加镜像,转置和镜像都是两两元素互换。