题目大意
https://leetcode.com/problems/sort-list/
单链表排序,要求时间复杂度O(n*logn),空间复杂度:O(1)
题目分析
先利用快慢指针找到链表中点,然后每段递归调用,最后merge两个链表
https://leetcode.com/problems/sort-list/
单链表排序,要求时间复杂度O(n*logn),空间复杂度:O(1)
先利用快慢指针找到链表中点,然后每段递归调用,最后merge两个链表
https://leetcode.com/problems/majority-element-ii/
找到数组中所有出现次数超过n/3的数
跟majority element题类似,我们可以借助两对变量保存答案,还是基于统计+抵消的思路,最后还要验证ans1和ans2出现次数是否超过n/3
https://leetcode.com/problems/majority-element/
找到数组中出现次数超过n/2的那个数
最开始的思路是基于hashmap,时间和空间复杂度都是O(N),看了讨论区的答案可以基于一种计数+抵消的方式,空间复杂度O(1)就能解。ans变量为最终结果,cnt为计数变量,遇到一个数如果等于ans直接cnt++,如果不等那么将cnt—(相当于抵消了一次)。
https://leetcode.com/problems/first-missing-positive/
无序数组找到第一个缺失的正整数
|
|
注意时间复杂度是O(n),空间复杂度是O(1)