二分查找
//笨方法,暴力遍历(第一次忘了看题目直接就上手了)
class Solution {
public int search(int[] nums, int target) {
int i;
for(i=0;nums[i]<target&&i<nums.length-1;i++)
if(nums[i]==target)
break;
if(nums[i]==target){return i;}
else {return -1;}
}
}
//左闭右闭法
class Solution {
public int search(int[] nums, int target) {
if(target<nums[0]||target>nums[nums.length-1]) {return -1;}
int left=0,right=nums.length-1;
while(left<=right){
int middle=(left+right)/2;
if(target == nums[middle]) return middle;
else if(target<nums[middle]) {
right=middle-1;
}
else {
left=middle+1;
}
}
return -1;
}
}
//左闭右开法
class Solution {
public int search(int[] nums, int target) {
if(target<nums[0]||target>nums[nums.length-1]) {return -1;}
int left=0,right=nums.length;
while(left<right){
int middle=(left+right)/2;
if(target == nums[middle]) return middle;
else if(target<nums[middle]) {
right=middle;
}
else {
left=middle+1;
}
}
return -1;
}
}