题目链接:
看到这个题目,心里笑出声了,这个题已经做了好多遍了,两种方式(左闭右闭、左闭右开)写得很顺畅
提交过很多次
function search(nums: number[], target: number): number {
let middle:number, left:number = 0, right:number = nums.length - 1;
while(left <= right) {
middle = left + ((right - left) >> 1);
if(nums[middle] > target) {
right = middle - 1;
}else if(nums[middle] < target) {
left = middle +1;
}else {
return middle;
}
}
return -1;
};
function search(nums: number[], target: number): number {
let left:number = 0, right:number = nums.length;
let middle:number;
while(left < right) {
middle = left + ((right - left) >> 1);
if(nums[middle] > target) {
right = middle;
}else if(nums[middle] < target) {
left = middle + 1;
}else {
return middle;
}
}
return -1;
};
题目链接:
这道题也做过很多遍了,但是!还是要想好久,今天看了卡哥的视频,豁然开朗!
题目讲解视频:
双指针重点:快指针用来寻找新数组的元素(不等于val的元素),慢指针是新数组的起点下标!
function removeElement(nums: number[], val: number): number {
let fast:number = 0;//快指针用来寻找新数组的元素(不等于val的元素)
let slow:number = 0;//慢指针就是新数组的下标起点
while(fast < nums.length) {
if(nums[fast] !== val) {
nums[slow] = nums[fast];
slow++;
}
fast++;
}
return slow;
};
因篇幅问题不能全部显示,请点此查看更多更全内容