力扣
704.二分查詢
給定一個n個元素的有序的(升序)整型陣列nums和一個目標值target,寫一個函式搜尋nums中的target,如果目標值存在返回小標,否則返回-1。
思路:二分查詢法,定義左右邊界[left,right);不斷取中值縮小查詢範圍。
class Solution{
public int search(int[] nums,int target){
int left=0;
int right=nums;
while(right>=left){
int mid=(left+right)/2;
if(nums[mid]>target){
right=mid-1;
}else if{
left=mid+1;
}else{
return mid;
}
}
return -1;
}
}
27.移除元素
給你一個陣列 nums和一個值 val,你需要原地移除所有數值等於val的元素。元素的順序可能發生改變。然後返回nums中與val不同的元素的數量。
思路:定義兩個指標用來對陣列操作,當fast指標指向的元素不等於val時;更新slow指標
class Solution{
public int removeElement(int[] nums,int val){
int slow=0;
for(int fast=0;fast<nums.length;fast++){
if(nums[fast]!=val){
nums[slow]=nums[fast];
slow++;
}
}
return slow;
}
}
977.有序陣列的平方
給你一個按非遞減順序排序的整數陣列nums,返回每個數字的平方組成的新陣列,要求也按非遞減順序排序。nums=[-4,-3,-2,0,1,2,5]
思路:由於題目是要按非遞減順序排序,定義兩個指標從左右兩邊開始往中間靠攏。
class Solution{
public int[] sortedSquares(int[] nums){
}
}