当前位置:首页 > 编程笔记 > 正文
已解决

35. 搜索插入位置 --力扣 --JAVA

来自网友在路上 189889提问 提问时间:2023-11-20 21:17:15阅读次数: 89

最佳答案 问答题库898位专家为你答疑解惑

题目

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

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

解题思路

  1. 对数组只存在一个元素的特殊情况进行单独判断;
  2. 设置变量控制左右边界,通过取中间值比较大小来缩小范围,避免遍历数组所有值;

代码展示

class Solution {public int searchInsert(int[] nums, int target) {if(nums.length == 1){if(nums[0] == target){return 0;} else if (nums[0] < target){return 1;} else {return 0;}}int left = 0;int right = nums.length - 1;int middle = 0;while (left < right){if(left + 1 == right){if(nums[left] == target){return left;} else if(nums[right] < target){return right + 1;} else if (nums[left] > target) {return Math.max(0, left - 1);} else {return right;}} else {middle = (left + right) / 2;if(nums[middle] == target){return middle;} else if (nums[middle] > target){right = middle;} else {left = middle;}}}return middle + 1;}
}

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"35. 搜索插入位置 --力扣 --JAVA":http://eshow365.cn/6-40632-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!