704. 二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
示例 1:
输入:nums= [-1,0,3,5,9,12],target= 9 输出: 4 解释: 9 出现在nums中并且下标为 4
思路:使用二分法,区间为左闭右闭。
代码:
class Solution {
public int search(int[] nums, int target) {
int i=0;
int j=nums.length-1;
while(i<=j){
int mid=(i+j)/2;
if(nums[mid]<target){
i=mid+1;
}
else if(nums[mid]>target){
j=mid-1;
}
else{
return mid;
}
}
return -1;
}
}
27. 移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
思路:双指针。
代码:
class Solution {
public int removeElement(int[] nums, int val) {
int j=0;
int size=nums.length;
for(int i=0;i<nums.length;i++){
if(nums[i]!=val){
nums[j]=nums[i];
j++;
}
else{
size--;
}
}
return size;
}
}
文章讲述了如何在有序整型数组中使用二分查找法寻找目标值,并介绍了一种原地移除元素的方法,利用双指针技巧在不使用额外空间的情况下更新数组长度。
1123

被折叠的 条评论
为什么被折叠?



