35. 搜索插入位置

2020-07-01  本文已影响0人  justonemoretry

自己解法

有序数组就是二分查找的依据,二分查找完了以后,能找到target直接返回,不能找到的话,就是left和right中较小的值加1,其实取两者中较大的值,就是插入的位置了。

class Solution {

    public int searchInsert(int[] nums, int target) {

        if (nums.length == 0) {

            return 0;

        }

        int left = 0;

        int right = nums.length - 1;

        while (left <= right) {

            int mid = (left + right) / 2;

            if (nums[mid] == target) {

                return mid;

            } else if (nums[mid] > target) {

                right = mid - 1;                

            } else {

                left = mid + 1;

            }

        }

        return Math.max(left, right) ;

    }

}

官方解法

思路一致,不过最后的比较不用再比较了,不管是left=mid + 1,或者right = mid - 1都是left较大。

class Solution {

    public int searchInsert(int[] nums, int target) {

        int left = 0, right = nums.length - 1;

        while(left <= right) {

            int mid = (left + right) / 2;

            if(nums[mid] == target) {

                return mid;

            } else if(nums[mid] < target) {

                left = mid + 1;

            } else {

                right = mid - 1;

            }

        }

        return left;

    }

}

上一篇 下一篇

猜你喜欢

热点阅读