做题方法总结(自用) 摩尔投票法核心不同元素两两抵消若存在超过半数的众数最后剩下的候选就是它最后一般还要校验。 极简版相同票数 1不同 - 1计数归零就换新候选数量过半的数抵消不完。例题eg: 给定一个大小为n的数组nums返回其中的多数元素。多数元素是指在数组中出现次数 大于⌊ n/2 ⌋的元素。不同数字互相抵消最后剩下的那个数一定是多数元素想象成打架候选者candidate计数器countcount0 的时候把当前数字定为新候选如果当前数字 候选 → count如果当前数字 候选 → count--互相抵消反转法观察样例[1,2,3,4,5,6,7],k3,n7目标结果[5,6,7,1,2,3,4]拆分三步反转整体全部反转[7,6,5,4,3,2,1]前 k 个元素反转[5,6,7,4,3,2,1]后面剩下 n-k 个元素反转[5,6,7,1,2,3,4]// 区间反转[left, right] 闭区间 void reverse(vectorint nums, int left, int right) { while(left right) { int temp nums[left]; nums[left] nums[right]; nums[right] temp; left; right--; }