leetcode--Search Insert Position

来源:互联网 发布:h5分享到微信模块js 编辑:程序博客网 时间:2024/06/06 03:15

Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.

You may assume no duplicates in the array.

Here are few examples.
[1,3,5,6], 5 → 2
[1,3,5,6], 2 → 1
[1,3,5,6], 7 → 4
[1,3,5,6], 0 → 0


题意:给定一个排序的数组,和一个目标数,返回目标数所在的index,如果没有,找出目标数应该插入的位置

分类:数组,二分查找


解法1:遍历查找

[java] view plain copy
  1. public class Solution {  
  2.     public int searchInsert(int[] nums, int target) {  
  3.         int res = -1;  
  4.         for(int i=0;i<nums.length;i++){  
  5.             if(nums[i]>=target) return i;  
  6.         }  
  7.         return nums.length;  
  8.     }  
  9. }  

解法2:二分查找

[java] view plain copy
  1. public class Solution {  
  2.     public int searchInsert(int[] nums, int target) {  
  3.         int low = 0;  
  4.         int high = nums.length-1;  
  5.         int mid = 0;            
  6.         while(low<=high){    
  7.             mid = (low+high)/2;    
  8.             if(nums[mid]==target) break;    
  9.             else if(nums[mid]>target) high = mid-1;    
  10.             else low = mid+1;    
  11.         }           
  12.         if(nums[mid]==target){  
  13.             return mid;  
  14.         }else if(nums[mid]<target){  
  15.             return mid+1;  
  16.         }else{  
  17.             return mid;  
  18.         }  
  19.     }  

原文链接http://blog.csdn.net/crazy__chen/article/details/45675779

原创粉丝点击