力扣题目:704. 二分查找
刷题时长:总计 10分钟 (coding - 5min,debug - 5min)
问题所在
- 条件判断mid == target。其中mid是数组下标,target是数组元素,无法比较。
- While中无break。当搜索满足nums[mid] == target,应break
本题收获
- 区间定义的区别:左闭右开 vs 左闭右闭 (preferred)
- 运用mid = left + (right – left) / 2 防溢出。 Python 的 int 类型是可以无限大的,不会溢出。Python 会自动将 int 类型转换为 long 类型,以避免溢出。但是为了养成良好习惯还是使用文章中的写法,避免以后写别的语言犯错。
- 二分查找的变形:根据题意,可集合两个判断条件,或答案取左/右边界而非mid值
- 完成相关题目:#35 (easy - 5min), #34 (medium - 20min), #69(easy – 20min), #368 (easy – 5min)
力扣题目:27. 移除元素
刷题时长:双指针法5min,暴力法15min
问题所在
- 暴力法用for循环无法动态改变数组长度,此处应用while循环
本题收获
- 快慢指针法可使运行时间复杂度从O(n^2)优化至O(n)
- while vs for loop
- 快慢指针解题套路模版
- 完成相关题目:#26(easy-5min), #283 (easy-30min), #844(easy-20min), #977(easy-20min)