[LeetCode]--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 t

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

我第一时间想到还是二分查找法。就是处理mid和重复出现的数字的时候会有一点点卡,其余应该都没问题,所以直接上代码。

public int searchInsert(int[] nums, int target) {
        int low = 0, high = nums.length - 1, temp = -1, mid = -1;
        while (low <= high) {
            mid = (low + high) / 2;
            if (nums[mid] == target) {
                temp = mid;
                break;
            }
            if (nums[mid] > target)
                high = mid - 1;
            if (nums[mid] < target)
                low = mid + 1;
        }
        if (temp == -1) {
            if (nums[mid] < target)
                return mid + 1;
            else
                return mid;
        }
        while (temp > 0 && nums[temp - 1] == target)
            temp--;
        return temp;
    }
目录
相关文章
|
存储 索引
LeetCode 381. Insert Delete GetRandom O1 Dallowed
设计一个支持在平均 时间复杂度 O(1) 下, 执行以下操作的数据结构。
58 0
LeetCode 381. Insert Delete GetRandom O1 Dallowed
|
存储 索引
LeetCode 380. Insert Delete GetRandom O1
设计一个支持在平均 时间复杂度 O(1) 下,执行以下操作的数据结构。
35 0
LeetCode 380. Insert Delete GetRandom O1
LeetCode之Search Insert Position
LeetCode之Search Insert Position
81 0
|
存储 算法 Java
LeetCode 380: 常数时间插入、删除和获取随机元素 Insert Delete GetRandom O(1)
题目: 设计一个支持在平均 时间复杂度 O(1) 下,执行以下操作的数据结构。 insert(val):当元素 val 不存在时,向集合中插入该项。 remove(val):元素 val 存在时,从集合中移除该项。
1042 0