`

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

同样是在有序数组中查找一个目标元素,这种情况我们一般都用二分查找法。这道题目比较简单,用二分法找到目标元素就直接返回当然元素下标;如果没有找到,当二分查找结束时,也就是left指针大于right指针后,此时left指针恰好为要插入的位置。代码如下:
public class Solution {
    public int searchInsert(int[] nums, int target) {
        if(nums == null || nums.length == 0) return 0;
        int l = 0; 
        int r = nums.length - 1;
        while(l <= r) {
            int m = l + (r - l) / 2;
            if(nums[m] == target) {
                return m;
            } else if(nums[m] > target) {
                r = m - 1;
            } else {
                l = m + 1;
            }
        }
        return l;
    }
}
分享到:
评论

相关推荐

    js-leetcode题解之35-search-insert-position.js

    js js_leetcode题解之35-search-insert-position.js

    C语言-leetcode题解之35-search-insert-position.c

    c语言入门 C语言_leetcode题解之35-search-insert-position.c

    LeetCode题解(java语言实现).pdf

    * Search Insert Position:该题目要求在排序数组中查找元素,实现方法使用了二分查找算法。 * Longest Consecutive Sequence Java:该题目要求找到最长的连续序列,实现方法使用了哈希表和迭代算法。 * Search a 2D...

    python-leetcode面试题解之第35题搜索插入位置-python题解.zip

    - 定义一个名为`searchInsert`的函数,接收两个参数:`nums`和`target`。 - 初始化左边界`left`为0,右边界`right`为数组长度减1。 - 使用`while`循环进行二分查找,直到`left 。 - 计算中间位置`mid = (left + ...

    c++-c++编程基础之leetcode题解第35题搜索插入位置.zip

    int searchInsert(vector&lt;int&gt;& nums, int target) { int left = 0, right = nums.size() - 1; while (left ) { int mid = left + (right - left) / 2; // 如果目标值等于中间位置的值,返回该位置 if ...

    LeetCode 刷题汇总1

    * 搜索插入位置(Search Insert Position):在排序数组中搜索插入位置。 8. 动态规划: * 3Sum(3Sum):找到数组中三个元素的和等于目标值的元素。 * 3Sum最近(3Sum Closest):找到数组中三个元素的和最近...

    算法刷题笔记leetcode/lintcode

    - Search Insert Position(搜索插入位置) - Search for a Range(搜索范围) - First Bad Version(第一个错误版本) - Search a 2D Matrix(二维矩阵中的搜索) - Search a 2D Matrix II(二维矩阵中的搜索...

    CleanCodeHandbook_v1.0.3

    - Search Insert Position(搜索插入位置) - Find Minimum in Sorted Rotated Array(在排序旋转数组中查找最小值) 从文件中提取的信息点可以看出,"CleanCodeHandbook_v1.0.3" 是一个专注于指导如何编写清晰且...

    Leetcode题目+解析+思路+答案.pdf

    - **Search Insert Position**:在排序数组中查找目标值的插入位置。 2. **位操作(Bit Manipulation)**: - **Missing Number**:在一个整数序列中找出缺失的数字。 - **Power of Two**:判断一个整数是否为2...

    常见算法题答案及解析

    48. Search Insert Position:查找插入位置。 49. Find Minimum in Sorted Rotated Array:在一个排序旋转数组中查找最小值。 50. Find Minimum in Rotated Sorted Array II – With Duplicates:同上题,但在数组中...

    leetcode java

    - "搜索插入位置"(Search Insert Position)是二分搜索的基础应用。 - 在"旋转排序数组中寻找最小值"(Find Minimum in Sorted Rotated Array)中,二分搜索也有其变种的应用。 以上知识点涵盖了LeetCode Java版的...

    Leetcode book刷题必备

    48. Search Insert Position:在一个有序数组中找到一个数的位置,如果不存在则插入的位置。 49. Find Minimum in Sorted Rotated Array:在一个旋转排序数组中找到最小值。 50. Find Minimum in Rotated Sorted ...

    leetcode官方50题算法详解

    1. **搜索插入位置(Search Insert Position)**:给定一个已排序的数组和一个目标值,在数组中找到目标值的位置,如果不存在返回插入的位置。 2. **寻找旋转排序数组中的最小值(Find Minimum in Rotated Sorted ...

    算法学习笔记

    - Search Insert Position:在排序数组中查找目标值,并返回其索引。 - Search for a Range:在排序数组中搜索给定值的起始和结束位置。 - Find Peak Element:在一个整数数组中找到一个峰值元素。 - Median of Two ...

    lintcode算法分析和解答

    - **查找插入位置(Search Insert Position)** - 在有序数组中查找一个元素的插入位置。 - **查找目标元素范围(Search for a Range)** - 查找目标元素在有序数组中的起始和结束位置。 - **第一个错误版本(First Bad...

    Coding Interview in Java

    9. 基于二分查找的问题:例如Search Insert Position(搜索插入位置),这需要候选人对二分查找算法有深入理解。 10. 深入理解堆和优先队列:在问题如Kth Largest Element in an Array(数组中第K大的元素)中会...

    算法-leetcode-剑指offer上的题很多

    - **查找插入位置(Search Insert Position)**: 在排序数组中查找一个数字的插入位置。 - **在排序数组中寻找范围(Search for a Range)**: 在排序数组中找到给定数字范围的位置。 - **查找矩阵中的位置(Search a 2D ...

Global site tag (gtag.js) - Google Analytics