- 博客(3)
- 收藏
- 关注
原创 LeetCode34. 在排序数组中查找元素的第一个和最后一个位置
但不同于传统的二分搜索,我们所要搜索的target在数组中可能有多个,需要输出其开始位置与结束位置。但nums[mid] = target时,我们可以将搜索到的target下标mid作为左端点继续搜索。此举的目的是向右继续搜索target,直到搜到最右端的target,也就是右边界为止。当target小于数组的最小值或者大于数组的最大值时,rb、lb不会发生任何改变,此时输出{-1, -1};当target在数组的范围内但数组内没有它时,lb > rb,此时也应输出{-1, -1};
2024-07-15 18:12:26
187
原创 快速排序模板及其理解
分区的思想是:选定一个数,将所有小于这个数的数组元素都放在它的左侧,同理所有大于这个数的数组元素都放在它的右侧。此时,这个数在数组中就是有序的,它处于它应该在的位置。一直进行分区这个操作,直到这个区间只有一个数,也就代表这个区间的父区间排序完毕。此时进行第一次的partition,我们默认取区间右边界的数为mid,也就是将4作为界。然后定义快慢指针,初始值都是l,使用while循环,每次循环快指针都往右走,一直走到r结束。以上这个操作,将使得原区间中所有比mid小的数,都在慢指针的左侧。
2024-07-15 13:17:48
221
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人