Skip to content
This repository has been archived by the owner on Feb 14, 2023. It is now read-only.

35. 搜索插入位置 #26

Open
AmelloAster opened this issue Jul 17, 2020 · 1 comment
Open

35. 搜索插入位置 #26

AmelloAster opened this issue Jul 17, 2020 · 1 comment
Labels
Easy 史莱姆 Finished 经验+1 Leetcode daily topic 每日药丸 世尘 世界的尘埃哒 金金 Code is life

Comments

@AmelloAster
Copy link
Collaborator

35. 搜索插入位置

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

你可以假设数组中无重复元素。

示例 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%
的用户
@AmelloAster AmelloAster added Easy 史莱姆 Finished 经验+1 Leetcode daily topic 每日药丸 金金 Code is life labels Jul 17, 2020
@liujiangs
Copy link
Collaborator

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循环慢

@liujiangs liujiangs added the 世尘 世界的尘埃哒 label Jul 17, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Easy 史莱姆 Finished 经验+1 Leetcode daily topic 每日药丸 世尘 世界的尘埃哒 金金 Code is life
Projects
None yet
Development

No branches or pull requests

2 participants