35.Search Insert Position

题目链接:https://leetcode.com/problems/search-insert-position/description/

题目大意:一串升序数组和target,如果在数组中能找到target,则返回下标值;如果找不到,则返回应插入的位置下标值。

解法一:利用二分查找,查找是否有target,如果有则返回,否则在最后得到的low值就是应该插入的位置或是low+1该插入的位置。代码如下(耗时7ms):

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

解法二:直接暴力,逐一便利查看target是否存在于数组中,如果存在则返回下标值,如果不存在则返回应插入的位置。代码如下(耗时6ms):

 1     public int searchInsert(int[] nums, int target) {
 2         
 3         for(int i = 0; i < nums.length; i++) {
 4             if(target < nums[i]) {
 5                 if(i > 0) {
 6                     return i;
 7                 }
 8                 else {
 9                     return 0;
10                 }
11             }
12             else if(target == nums[i]) {
13                 return i;
14             }
15         }
16         if(nums[nums.length - 1] < target) {
17             return nums.length;
18         }
19         return 0;
20     }
View Code

 

posted on 2018-01-06 22:18  二十年后20  阅读(130)  评论(0编辑  收藏  举报

导航