35. Search Insert Position

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

读题

题目的意思就是给你一个有序的数组和一个数,找出这个数字在数组中的位置

思路

题目比较简单,可以遍历查找,也可以使用二分查找,遍历的话就是找到第一个大于等于target的数就返回,如果到了数组的末尾还没有找到,target就应该在数组的末尾

题解

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

或者使用二分的方式

 public int searchInsert(int[] A, int target) {
        int low = 0, high = A.length-1;
        while(low<=high){
            int mid = (low+high)/2;
            if(A[mid] == target) return mid;
            else if(A[mid] > target) high = mid-1;
            else low = mid+1;
        }
        return low;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容