LeetCode刷题Java版035.搜索插入位置
作者:沉默王二
发布时间:2022-09-01T09:25:56.877+0800
035.搜索插入位置
题意
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法。
难度
简单
示例
输入: nums = [1,3,5,6], target = 5
输入: nums = [1,3,5,6], target = 2输出: 1
分析
我们学习过 插入排序 ,要求每次都要找到大于等于 target 的第一个位置,其实就和 034.在排序数组中查找元素的第一个位置和最后一个位置 的目的差不多。
还是用二分查找,查找小于等于target的,最接近target的,从而找出mid的位置,判断当前位置是否大于target,大于的话则调整上界right,让下次的mid更小,小于等于的话,则更新下界left,让下次的mid更大,并且同时记录答案为mid即可解决。
class Solution {
while (lef < rig) { int mid = lef + (rig - lef) / 2; if (target > nums[mid]) lef = mid + 1; else rig = mid; } return lef; } public int searchInsert(int[] nums, int target) { return lowerBound(nums,0,nums.length,target); }}
总结
本题作为简单题,考察大家对于 二分查找 的基本使用,以及对插入排序的理解。
力扣地址:https://leetcode.cn/problems/search-insert-position/
一步一个脚印
不积跬步无以至千里,不积小流无以成江海。LeetCode - 100天从算法小白到卷王正式启动了,我们计划周一到周五至少每天更新一篇,周六周日更新一篇,目标 300 道 LeetCode 经典题。
PDF 版本目前只针对**二哥编程星球 的球友开放,如果你也想一起打卡学习算法的话,戳链接 **加入我们吧。
一个人可以走得很快,但一群人才能走得更远。二哥编程星球 (目前已有 740 多名球友加入)里面的每个球友都非常的友善,除了鼓励你,还会给你提出合理的建议,一起冲!
035.搜索插入位置
题意
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法。
难度
简单
示例
输入: nums = [1,3,5,6], target = 5
输入: nums = [1,3,5,6], target = 2输出: 1
分析
我们学习过 插入排序 ,要求每次都要找到大于等于 target 的第一个位置,其实就和 034.在排序数组中查找元素的第一个位置和最后一个位置 的目的差不多。
还是用二分查找,查找小于等于target的,最接近target的,从而找出mid的位置,判断当前位置是否大于target,大于的话则调整上界right,让下次的mid更小,小于等于的话,则更新下界left,让下次的mid更大,并且同时记录答案为mid即可解决。
class Solution {
while (lef < rig) { int mid = lef + (rig - lef) / 2; if (target > nums[mid]) lef = mid + 1; else rig = mid; } return lef; } public int searchInsert(int[] nums, int target) { return lowerBound(nums,0,nums.length,target); }}
总结
本题作为简单题,考察大家对于 二分查找 的基本使用,以及对插入排序的理解。
力扣地址:https://leetcode.cn/problems/search-insert-position/
一步一个脚印
不积跬步无以至千里,不积小流无以成江海。LeetCode - 100天从算法小白到卷王正式启动了,我们计划周一到周五至少每天更新一篇,周六周日更新一篇,目标 300 道 LeetCode 经典题。
PDF 版本目前只针对**二哥编程星球 的球友开放,如果你也想一起打卡学习算法的话,戳链接 **加入我们吧。
一个人可以走得很快,但一群人才能走得更远。二哥编程星球 (目前已有 740 多名球友加入)里面的每个球友都非常的友善,除了鼓励你,还会给你提出合理的建议,一起冲!
035.搜索插入位置
题意
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法。
难度
简单
示例
输入: nums = [1,3,5,6], target = 5
输入: nums = [1,3,5,6], target = 2输出: 1
分析
我们学习过 插入排序 ,要求每次都要找到大于等于 target 的第一个位置,其实就和 034.在排序数组中查找元素的第一个位置和最后一个位置 的目的差不多。
还是用二分查找,查找小于等于target的,最接近target的,从而找出mid的位置,判断当前位置是否大于target,大于的话则调整上界right,让下次的mid更小,小于等于的话,则更新下界left,让下次的mid更大,并且同时记录答案为mid即可解决。
class Solution {
while (lef < rig) { int mid = lef + (rig - lef) / 2; if (target > nums[mid]) lef = mid + 1; else rig = mid; } return lef; } public int searchInsert(int[] nums, int target) { return lowerBound(nums,0,nums.length,target); }}
总结
本题作为简单题,考察大家对于 二分查找 的基本使用,以及对插入排序的理解。
力扣地址:https://leetcode.cn/problems/search-insert-position/
一步一个脚印
不积跬步无以至千里,不积小流无以成江海。LeetCode - 100天从算法小白到卷王正式启动了,我们计划周一到周五至少每天更新一篇,周六周日更新一篇,目标 300 道 LeetCode 经典题。
PDF 版本目前只针对**二哥编程星球 的球友开放,如果你也想一起打卡学习算法的话,戳链接 **加入我们吧。
一个人可以走得很快,但一群人才能走得更远。二哥编程星球 (目前已有 740 多名球友加入)里面的每个球友都非常的友善,除了鼓励你,还会给你提出合理的建议,一起冲!
知识星球
扫码加入星球
查看更多优质内容
https://wx.zsxq.com/mweb/views/joingroup/join_group.html?group_id=15522885221412