一、bruteforce:O(n**2) O(1)
二、两边哈希表、一遍哈希表 O(n) O(n)
一、bruteforce:O(n**3) O(1)
二、排序+双指针:O(n**2) 去重/剪枝
Four Sum 排序+双层循环+双指针
栈 O(n) O(n)
扩展:只有一种括号?
最长有效括号?leetcode 32.
双指针 O(n+m) O(1)
递归 O(n+m) O(n+m)
先找到k个节点结束位置next_head,然后循环翻转,每次反转同时next_head指针后移,当第一组节点反转完成之后,下一组k个节点就有找到了。注意最后一组不够k个的处理。 一遍遍历O(n)
global和local的使用/滑动窗口
从后往前遍历,不需要进位直接返回,需要进位,前一位加一继续循环
中序遍历、递归(需要设置上下界)
递归:自顶向下O(nlogn)、自底向上(优化:每次保存上一次计算得到的高度值)(O(n))
一次遍历 total cur 一次遍历、贪心 cur保证当前,tptal保证全局
某个数字只出现一次,其余数字出现两次 异或
?
一、OrderedDict
二、set+双向链表
prev、cur、nxt指针的使用
堆排/快排
一个进一个出
原地
进位,python不需要考虑溢出
拒绝采样,7*7=49,拒绝大于10的,idx=1+(idx-1)%10
先找出数组2中的元素的下一个更大元素,并存入字典中,再去遍历数组1
双栈 peekMax() popMax() popMax()时候如果两个栈栈顶元素不一样则pop并保存,找到相同的pop,然后将保存的元素重新push到两个栈中
贪心 five、ten计数
滑动窗口、记录
快慢指针
重新进栈、与另一个对比,栈顶元素相同则pop
原文:https://www.cnblogs.com/liushoudong/p/12598415.html