力扣算法刷题Day1|数组:二分查找 双指针

力扣题目:704. 二分查找

刷题时长:总计 10分钟 (coding - 5mindebug - 5min)

问题所在

  1. 条件判断mid == target。其中mid是数组下标,target是数组元素,无法比较。
  2. While中无break。当搜索满足nums[mid] == target,应break

本题收获

  1. 区间定义的区别:左闭右开 vs 左闭右闭 (preferred)
  2. 运用mid = left + (right – left) / 2 防溢出。 Python int 类型是可以无限大的,不会溢出。Python 会自动将 int 类型转换为 long 类型,以避免溢出。但是为了养成良好习惯还是使用文章中的写法,避免以后写别的语言犯错。
  3. 二分查找的变形:根据题意,可集合两个判断条件,或答案取左/右边界而非mid 
  4. 完成相关题目:#35 (easy - 5min), #34 (medium - 20min), #69(easy – 20min), #368 (easy – 5min)


力扣题目:27. 移除元素

刷题时长:双指针法5min,暴力法15min

问题所在

  1. 暴力法用for循环无法动态改变数组长度,此处应用while循环

本题收获

  1. 快慢指针法可使运行时间复杂度从O(n^2)优化至O(n)
  2. while vs for loop
  3. 快慢指针解题套路模版
  4. 完成相关题目:#26(easy-5min), #283 (easy-30min), #844(easy-20min), #977(easy-20min)

你可能感兴趣的:(算法)