704. 二分查找
题目链接https://leetcode.cn/problems/binary-search/description/
-
题解(左闭右闭区间解法):
int search(int* nums, int numsSize, int target) {
//二分法查找(左闭右闭区间)
int left = 0;
int right = numsSize - 1;
while(left <= right){
int middle = (left + right) / 2;
if(nums[middle] > target){
right = middle - 1;
}else if(nums[middle] < target){
left = middle + 1;
}else{
return middle;
}
}
return -1;
}
-
题解(左闭右开区间解法):
int search(int* nums, int numsSize, int target) {
//二分法查找,左闭右开区间
int left = 0;
int right = numsSize;
while(left < right){
int middle = (left + right) / 2;
if(nums[middle] > target){
right = middle;
}else if(nums[middle] < target){
left = middle + 1;
}else{
return middle;
}
}
return -1;
}
27. 移除元素
题目链接https://leetcode.cn/problems/remove-element/description/
-
题解(双指针解法):
int removeElement(int* nums, int numsSize, int val) {
//双指针解法
int low = 0;
for(int fast = 0; fast < numsSize; fast ++){
if(nums[fast] != val){
nums[low ++] = nums[fast];
}
}
return low;
}