Open AmelloAster opened 4 years ago
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 1:
输入: [1,3,5,6], 5 输出: 2
示例 2:
输入: [1,3,5,6], 2 输出: 1
示例 3:
输入: [1,3,5,6], 7 输出: 4
示例 4:
输入: [1,3,5,6], 0 输出: 0
var searchInsert = function (nums, target) { let minT = target - 1; let maxT = target + 1; let mMid = 0; let aMid = 0; let mid = nums.findIndex(i => i === target); if (mid !== -1) { return mid; } mMid = nums.findIndex(i => i === minT); aMid = nums.findIndex(i => i === maxT); if (mMid !== -1 && aMid === -1) { return mMid + 1 } if (aMid !== -1 && mMid === -1) { return aMid } if (aMid !== -1 && mMid !== -1) { return aMid } if (aMid === -1 && mMid === -1) { if (target < nums[0]) return 0 if (target > nums[nums.length - 1]) return nums.length } }
1. 将 target 的值 -1 或者 +1 2. 在 nums 寻找 -1 或者 +1 之后是否在 nums 中存在这个数 3. 如果存在 则寻找是 -1 存在 还是 + 1存在 还是都存在 根据不同情况返回值 4. 如果都不存在则返回 target 是最左边还是最右边的数
执行结果: 通过 显示详情 执行用时: 68 ms, 在所有 JavaScript 提交中击败了74.53%的用户 内存消耗: 37.7 MB, 在所有 JavaScript 提交中击败了8.70% 的用户
var searchInsert = function(nums, target) { return nums.findIndex((val, index) => { return val >= target }) >= 0 ? nums.findIndex((val, index) => { return val >= target }) : nums.length };
为啥用API效率比for循环慢
35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 1:
示例 2:
示例 3:
示例 4:
解题代码
解题思路
解题效率