题目想法:由于之前是看过代码随想录的,所以这道题还是较为简单的。但是还是有些遗忘,突然忘了如何写二分法了,主要就是无法马上考虑到边界情况,什么时候能够返回-1,然后什么时候找到target,这些还是无法一下子想出来。不过题目还是AC了,主要就是注意左右区间的开闭,然后就是新区间的取值。
题目链接:34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)
题目想法:看到这个题还是思路比较乱的,直到要用二分法但是不知从何下手,最后看了别人的代码,发现了一个比较好的解题思路。分两次二分法查找,一次找左边界,一次找有边界。找左边界时,如果nums[mid] 和 target 相等就让 right - 1 ,这样区间是向左进行的最后找到左边界。同理,有边界就是相等时让 left + 1 ,这样找到有边界。这个算法还有一个巧妙地地方,最开始给左右边界均赋值-1,这样如果没找到或者给的数组没有值,那无需判断直接就能返回{-1,-1}。
题目链接:35. 搜索插入位置 - 力扣(LeetCode)
题目想法:这个就是找到插入位置就是left就能解决
题目想法:这用双指针真的很快。然后想尝试一下暴力解法,结果出bug了,进入了无线死循环,bug代码和改完之前的代码付下,主要还是数组长度变了没考虑。