思路
1.如果目标值T存在于数组,则找到目标值的下标。
2.如果目标值T不存在于数组,则找到≥T的第一个位置的下标。
化简一下就是:找到数组中≥T 的第一个位置
利用前置知识2 中所提到的通用分析方法:
给定一个按升序排列的整数数组 nums,其中不存在重复元素。另有一个整数 target 需要定位。请判断 target 是否出现在数组中:若出现,返回其下标;若未出现,返回为了保持数组升序,target 应插入的位置下标。
求解过程需要满足 O(logn) 的时间复杂度。
约束条件:
nums 的长度 n 满足 1≤n≤104。nums 中的每个整数以及 target 的取值均在 −104 到 104 之间。nums 为无重复元素的升序数组。输入包含两个参数:
nums:一个按升序排列、元素互不相同的整数列表。target:需要在 nums 中定位的目标整数。返回一个整数,表示 target 在 nums 中的下标;若 target 不存在于 nums,则返回它按升序插入时应占据的下标。下标从 0 开始。
输入
1 10
10
输出
0
说明
数组只有一个元素 10,目标值也是 10。目标值出现在下标 0 处,因此返回 0。
输入
6 0
-5 -3 1 2 4 7
输出
2
说明
有序数组为 -5, -3, 1, 2, 4, 7。目标值 0 不在数组中。按升序插入时,0 应位于 -3 和 1 之间,这个位置的下标是 2,因此返回 2。
输入
3 -100
-50 0 50
输出
0
说明
有序数组为 -50, 0, 50。目标值 -100 小于数组中的所有元素,所以需要插入到数组最前面。最前面的下标是 0,因此返回 0。
输入
5 100
-10 0 10 20 30
输出
5
说明
有序数组为 -10, 0, 10, 20, 30。目标值 100 大于数组中的所有元素,所以需要插入到数组末尾。由于数组长度为 5,末尾后一个位置的下标是 5,因此返回 5。
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册