LeetCode035搜索插入位置

25 阅读1分钟

题目:

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

你可以假设数组中无重复元素。

示例 1:

  • 输入: [1,3,5,6], 5
  • 输出: 2

示例 2:

  • 输入: [1,3,5,6], 2
  • 输出: 1

示例 3:

  • 输入: [1,3,5,6], 7
  • 输出: 4

示例 4:

  • 输入: [1,3,5,6], 0
  • 输出: 0

java:


    public static int searchInsert1(int[] nums, int target) {
        int len = nums.length;

        //定义区间.
        int low = 0;
        int high = len - 1;

        while (low <= high) {
            int mid = low + (high - low) / 2;
            if (nums[mid] > target) {
                high = mid - 1;
            } else if (nums[mid] < target) {
                low = mid + 1;
            } else {
                return mid;
            }
        }
        return high + 1;
    }

    public static int searchInsert2(int[] nums, int target) {
        int left = 0;
        int right = nums.length;
        while (left < right) {
            int mid = left + ((right - left) >> 1);
            if (nums[mid] > target) {
                right = mid;
            } else if (nums[mid] < target) {
                left = mid + 1;
            }else {
                return mid;
            }
        }
        return right;
    }

    public static void main(String[] args) {
        int[] nums = {1, 3, 5, 6};
        int i = searchInsert1(nums, 0);
        System.out.println(i);
        int[] nums2 = {1, 3, 5, 6};
        int i2 = searchInsert1(nums2, 0);
        System.out.println(i2);
    }
}

Go:


func SearchInsert(nums []int, target int) int {
	left, right := 0, len(nums)-1
	for left <= right {
		mid := left + (right-left)>>1
		if nums[mid] == target {
			return mid
		} else if nums[mid] > target {
			right = mid - 1
		} else if nums[mid] < target {
			left = mid + 1
		}
	}
	return right + 1
}



func main() {
	array := []int{1, 2, 3, 4, 5}
	index := LeetCode.SearchInsert(array, 6)
	fmt.Println(index)
}

道阻且长.行则将至.





***如果大家喜欢我的分享的话.可以关注我的微信公众号


念何架构之路