二分查找
二分查找标准代码:
var search = function(nums, target) {
let low = 0, high = nums.length - 1;
while (low <= high) {
const mid = Math.floor((high - low) / 2) + low;
const num = nums[mid];
if (num === target) {
return mid;
} else if (num > target) {
high = mid - 1;
} else {
low = mid + 1;
}
}
return -1;
};
双指针
轮转数组
这道题目中,最重要的一个点,轮转数组其实就是一个顺序循环队列。而且是一个队满(临界状态)的循环队列。
在轮转的时候,每次数组整体往后移一位,最后一位要轮转到第一位。
可以考虑取余运算: (rear + 1) % length
因为是轮转k个位置,所以是:(rear + k) % length
移动零
两种方法: