当前位置 博文首页 > be_gin_ner的博客:二分查找(给定一个?n?个元素有序的(升序)

    be_gin_ner的博客:二分查找(给定一个?n?个元素有序的(升序)

    作者:[db:作者] 时间:2021-09-03 12:09

    给定一个?n?个元素有序的(升序)整型数组?nums?和一个目标值?target??,写一个函数搜索?nums?中的?target,如果目标值存在返回下标,否则返回?-1
    示例 1:

    输入: nums = [-1,0,3,5,9,12], target = 9

    输出: 4

    解释: 9 出现在 nums 中并且下标为 4

    示例?2:

    输入: nums = [-1,0,3,5,9,12], target = 2

    输出: -1

    解释: 2 不存在 nums 中因此返回 -1

    ?

    public class lianxi {
    	public static void main(String[] args) {
    		Solution S = new Solution();
    		int[] nums = new int[] {-1,0,3,5,9,12};
    		int target = 9;
    		int a = S.search(nums, target);
    		System.out.println(a);
    		
    	}
    }
    
    class Solution {
        public int search(int[] nums, int target) {
            int i = 0;
            int len = nums.length - 1;
            while(i <= len){
                 int mid = (i +len) / 2;
                if(nums[mid] == target){
                    return mid;
                }
                else if(nums[mid] > target){
                    len = mid - 1;
                }
                else{
                    i = mid +1;
                }
            }
            return -1;
        }
    }

    ?

    cs