学习的是数组的二分查找和移除元素的算法。
1. 二分查找
要点:
① 使用二分查找的前提是有序数组,且数组中没有重复值。
② 注意定义的左右区间的开闭性,当定义Right = nums.size() - 1 时,nums[Right] 在数组中,取值区间为[Left , Right],而当定义Right = num.size() 时,nums[Right] 不在数组中,取值区间为[Left, Right),这种情况下,Left == Right 没有实际意义 ,因此写为 while(Left < Right)。
2. 移除元素
要点:
① 关于数组的元素,数组的元素在内存地址中是连续的,不能单独删除数组中的某个元素,只能覆盖。
② 快慢指针法:快指针寻找新数组下一个元素,慢指针指向更新新数组下标的位置。
③ 快指针可以与慢指针同一方向,也可以从数组末尾开始。两者的复杂度相同。