(LeetCode) Binary Search - LeetCode

Description:

Given a sorted (in ascending order) integer array nums of n elements and a target value, write a function to search target in nums. If target exists, then return its index, otherwise return -1.


Example 1:

Input: nums = [-1,0,3,5,9,12], target = 9
Output: 4
Explanation: 9 exists in nums and its index is 4

Example 2:

Input: nums = [-1,0,3,5,9,12], target = 2
Output: -1
Explanation: 2 does not exist in nums so return -1

 

Note:

  1. You may assume that all elements in nums are unique.
  2. n will be in the range [1, 10000].
  3. The value of each element in nums will be in the range [-9999, 9999].
Accepted
66,199
Submissions
134,906

 

Solution:

 

  Naive:

  

class Solution {
    public int search(int[] nums, int target) {
        
        for(int i = 0; i< nums.length; i++){
            
            if(nums[i]==target){
                return i;
            }
        }
        
        return -1;
        
    }
}

 

Binary Search:

 

class Solution {
    public int search(int[] nums, int target) {
        
      
        int start = 0; 
        int end = nums.length-1;
        
        while (start<=end){
            
            int mid = start+(end-start)/2;
            
            if(nums[mid]==target){
                
                return mid;
            }
            
            else{
                
                if(nums[mid]<target){
                    
                    start = mid+1;
                }
                else{
                    
                    end = mid-1;
                }
                
            }
            
        }
        return -1;
        
    }
}

 

 

posted @ 2019-08-26 16:23  CodingYM  阅读(142)  评论(0编辑  收藏  举报