704.二分法
https://leetcode.com/problems/binary-search/description/?envType=list&envId=pgm5myyh
class Solution { public int search(int[] nums, int target) { if(nums.length==1 && nums[0]==target){ return 0; } int left = 0; int right = nums.length; while(right > left){ int mid = (left+right)/2; if(nums[mid] > target){ right = mid; }else if(nums[mid] < target){ left = mid+1; }else{ return mid; } } return -1; }}
需注意以下
1.right的界线位置
如使用
int right = nums.length-1;
会导致nums少遍历几个元素
2.nums.length==1需另外处理
因left及right会相等,无法进入while迴圈处理
27.移除元素
https://leetcode.com/problems/remove-element/description/?envType=list&envId=pgm5myyh
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; }}
解题概念:
使用快慢指针,当快指针位置不等于val,便让nums[slow]=快指针位置,以及slow++。