# 88、合并两个有序数组
深浅拷贝
nums1 = nums2 浅拷贝
nums1[:] = nums2[:] 深拷贝
思路
三指针
“原地修改”
空间复杂度为 O(1)
# 27、移除元素
思路
左右双指针
分布从数组头尾开始遍历
注意
数组为空或者只有一个元素的情况单独处理
# 26、80、删除有序数组中的重复项 I II
思路
双指针
一个指向当前处理的元素(快)
一个指向不重复的元素(慢)
注意
删除之后保留k个相同元素
快指针与慢指针前 (k-1) 个元素进行比较
# 169、多数元素
思路
哈希表
同时计数和维护最大值
排序
中位数等同于众数
随机化
随机选数判断是否为最多数元素
分治
二分法判断每个子数组中的众数
投票算法
众数+1 其他数-1
# 189、轮转数组
思路
环状替换
注意循环截止条件
最大公约数、最小公倍数
翻转数组
先翻转整个
然后对前后部分依此翻转
注意
特殊情况太多了
数组为空、旋转次数为0
互质等等判断
# 121、122、买卖股票的最佳时机 I II
思路
两个变量同时存储
分别保存最小买入价和最大利润
贪心算法
找递增子序列
动态规划
有点类似于数列问题递归求和
# 55、45、跳跃游戏 I II
思路
贪心
每次寻找跳得最远的
动态规划
倒序寻找解
# 274、H指数
思路
先排序后查找
计数排序
二分查找