✨ 技巧

位运算、排序 + 计数等巧妙手法,往往能将复杂问题化为一行解法。

5 题  ·  简单 ×2  中等 ×3

# 题目 难度
136 只出现一次的数字 简单
169 多数元素 简单
75 颜色分类 中等
31 下一个排列 中等
287 寻找重复数 中等

核心思路

  • 只出现一次的数字:所有数异或,相同的数两两抵消,最终剩下只出现一次的数。
  • 多数元素:Boyer-Moore 投票算法,维护候选数和计数;遇到相同则加一,不同则减一,减到 0 更换候选。
  • 颜色分类:荷兰国旗问题,三指针(low、mid、high)一次遍历原地分类。
  • 下一个排列:从右找第一个下降点 i,再从右找第一个大于 nums[i] 的数交换,最后翻转 i+1 到末尾。
  • 寻找重复数:将数组视为链表(i → nums[i]),用快慢指针找环入口(Floyd 判环),O(1) 空间且不修改数组。