HOT100——搜索旋转排序数组(JS实现)

简介: HOT100——搜索旋转排序数组(JS实现)

题目描述

image.png

解题思路

本题最核心的在于寻找峰值,所谓的峰值指的是该值比左边元素大,该值比右边元素也大,然后根据峰值分割数组,判断target是在数组的左边还是右边,然后使用indexOf判断位置,最后返回。

解题代码

var search = function (nums, target) {
    let left = 0;
    let right = nums.length - 1;
    let mid = left + right >>> 1;
    // 开始寻找中位数
    if (nums.length > 2) {
        for (let i = 1; i < nums.length; i++) {
            if (nums[i] > nums[i-1] && nums[i] > nums[i+1]) {
                mid = i;
                break;
            }
            if (nums[i] < nums[i-1] && nums[i] < nums[i+1]) {
                mid = i-1;
                break;
            }
        }
    }
    mid
    if (target < nums[mid]) {
        // nums.slice(mid)
        if (target < nums[0] && target <= nums[nums.length - 1]) {
            if (nums.slice(mid).indexOf(target) !== -1) {
                const temp = nums.slice(mid);
                return temp.indexOf(target) + mid
            } else {
                return -1;
            }
        } else {
            const temp = nums.slice(0, mid);
            return temp.indexOf(target)
        }
    } else if (target === nums[mid]) {
        return mid;
    } else {
        if (target > nums[0] && target <= nums[nums.length - 1]) {
            if (nums.slice(mid).indexOf(target) !== -1) {
                const temp = nums.slice(mid);
                return temp.indexOf(target) + mid
            } else {
                return -1;
            }
        } else {
            return -1
        }
    }
};
复制代码

启示

  • 学会通过位运算的方式求中位数。
  • 学会求峰值。

通过截图

image.png

相关文章
|
3天前
|
JavaScript
通过使用online表单的获取使用,了解vue.js数组的常用操作
通过使用online表单的获取使用,了解vue.js数组的常用操作
|
3天前
|
存储 JavaScript 前端开发
深入了解JavaScript中的indexOf()方法:实现数组元素的搜索和索引获取
深入了解JavaScript中的indexOf()方法:实现数组元素的搜索和索引获取
7 0
|
6天前
|
JavaScript 前端开发
js关于数组的方法
js关于数组的方法
10 0
|
6天前
|
JavaScript 前端开发
js怎么清空数组?
js怎么清空数组?
11 0
|
6天前
|
存储 JavaScript 前端开发
js处理数组的方法
js处理数组的方法
13 2
|
6天前
|
JavaScript 前端开发
js数组排序的方法
js数组排序的方法
7 1
|
13天前
|
JavaScript 前端开发
JavaScript模糊搜索功能
JavaScript模糊搜索功能
|
13天前
|
JavaScript 前端开发 索引
JavaScript 数组的索引方法数组转换为字符串方法
JavaScript 数组的索引方法数组转换为字符串方法
|
13天前
|
JavaScript 前端开发
JavaScript 数组的添加删除和排序
JavaScript 数组的添加删除和排序
|
17天前
|
JavaScript 前端开发
js 操作数组的方法
js 操作数组的方法
22 4