题目:
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
代码:
package com.company;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] nums = new int[]{-1,0,3,5,9,12};
int target = 11;
int start = 0;
int end = nums.length;
int mid = (start+end)/2;
System.out.println(mid);
while (start <= end){
if (nums[mid] == target){
System.out.println(mid);
break;
}
if (nums[mid] > target){
end = mid-1;
}
if (nums[mid] < target){
start = mid+1;
}
mid = (start+end)/2;
}
if (start > end)
System.out.println("-1");
}
之前代码 中的 end = nums.length
一直提示数组越界,参考别人代码后,才考虑到极端情况!
使用数组时,一定要预算极端情况,才能保证代码的正确性
本题目解题思路:
二分法,使用循环迭代。最难的是判断while里面的条件
做题心得 :
自己需要从小数推算出规律