侧边栏壁纸
博主头像
沙漠渔

把過去的累積,善用到當下

  • 累计撰写 484 篇文章
  • 累计创建 295 个标签
  • 累计收到 958 条评论
标签搜索

目 录CONTENT

文章目录

[leetcode]搜索插入位置题解

沙漠渔
2022-05-13 / 0 评论 / 0 点赞 / 103 阅读 / 1,581 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-05-13,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

问题说明

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

请必须使用时间复杂度为 O(log n) 的算法。

 

示例 1:

输入: nums = [1,3,5,6], target = 5
输出: 2

示例 2:

输入: nums = [1,3,5,6], target = 2
输出: 1

示例 3:

输入: nums = [1,3,5,6], target = 7
输出: 4

示例 4:

输入: nums = [1,3,5,6], target = 0
输出: 0

示例 5:

输入: nums = [1], target = 0
输出: 0

 

提示:

  • 1 <= nums.length <= 104
  • -104 <= nums[i] <= 104
  • nums 为无重复元素升序排列数组
  • -104 <= target <= 104
Related Topics
  • 数组
  • 二分查找
  • 解决方案

    package leetcode.editor.cn;
    /**
     * 搜索插入位置
     * @date 2022-02-11 14:19:13
     * @author 沙漠渔
     */
    public class 搜索插入位置{
    static
    //leetcode submit region begin(Prohibit modification and deletion)
    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;
        }
    }
    //leetcode submit region end(Prohibit modification and deletion)
    
        static class ListNode {
            int val;
            ListNode next;
            public ListNode(int val) { this.val = val; }
            public ListNode(int val, ListNode next) { this.val = val; this.next = next; }
        }
    	
    	/**
         * 最终测试主方法
         */
    	public static void main(String[] args) {
            Solution solution = new Solution();
            System.out.println(solution.searchInsert(new int[]{1,2,3,4},3));
        }
    }
    
    0
    广告 广告

    评论区