首页 > 其他分享 >搜索旋转排序数组

搜索旋转排序数组

时间:2023-02-10 19:23:18浏览次数:45  
标签:target nums number len 搜索 param 数组 排序

整数数组 nums 按升序排列,数组中的值 互不相同 。

在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。

给你 旋转后 的数组 nums 和一个整数 target ,如果 nums 中存在这个目标值 target ,则返回它的下标,否则返回 -1 。

你必须设计一个时间复杂度为 O(log n) 的算法解决此问题。

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
const search = (nums, target) => {
    const len = nums.length
    if (len === 0) return -1
    let start = 0,
        end = len - 1
    while (start <= end) {
        const mid = Math.floor((start + end) / 2)
        if (nums[mid] === target) return mid
        if (nums[0] <= nums[mid]) {
            if (target >= nums[0] && target <= nums[mid]) {
                end = mid - 1
            } else {
                start = mid + 1
            }
        } else {
            if (target >= nums[mid] && target <= nums[end]) {
                start = mid + 1
            } else {
                end = mid - 1
            }
        }
    }
    return -1
};

  

标签:target,nums,number,len,搜索,param,数组,排序
From: https://www.cnblogs.com/zhenjianyu/p/17110101.html

相关文章

  • 排序
    排序将一组杂乱无章的数据按一定规律顺次排列起来如果参加数据的结点含有多个数据域,那么排序往往针对其中某个域排序分类按存储介质:内部排序:数据量不大、数据在......
  • 【C++复习】第六章 数组、指针、字符串
    1、数组1.1基本数组数组声明inta[10];声明时方括号内是元素个数。下标从0开始。第一个元素是a[0],最后一个元素是a[9]a[n]表示的是第n+1个元素二维数组intb[3]......
  • Python numpy数组操作(分割数组) 
    分割数组函数数组及操作split将一个数组分割为多个子数组hsplit将一个数组水平分割为多个子数组(按列)vsplit将一个数组垂直分割为多个子数......
  • EAS_WEB的后台handler里获取前台传过来的数组
    前台可以这么写:bizReqDateChangeFun:function(changeValue,inst){vargrid=waf("#entries");varexpenseType_CostCenter=newArray();//这里......
  • 构造AVL树基础 + 力扣1382. 将二叉搜索树变平衡
    构造AVL树基础定义对于任意一个节点,左子树和右子树的高度差不能超过1。怎么计算标注节点的高度计算平衡因子如何维持平衡如果平衡被打破需要根据不同的情况来旋......
  • mysql 按照天,小时,分钟等分组排序
    按照季度统计SELECTCONCAT(DATE_FORMAT(create_time,'%Y'),'-',FLOOR((DATE_FORMAT(create_time,'%m')+2)/3),'季度')ASQUARTER,COUNT(1)AS总量FROM表WHEREcr......
  • echarts动态排序柱状图
    链接:https://juejin.cn/post/7149089840850534407<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metahttp-equiv="X-UA-Comp......
  • 重写Collections集合的排序比较CompareTo方法
    Collections.sort()使用该方法实际是重写Comparator接口的compare方法实现排序://传入参数list集合,Comparator接口T:list的元素类型//如List<Map<String,Object>>lis......
  • java 存在连续三个奇数的数组
    说明给你一个整数数组arr,请你判断数组中是否存在连续三个元素都是奇数的情况:如果存在,请返回true;否则,返回false。 代码 publicbooleanthreeConsecutiveOdds(......
  • js基础笔记学习173-数组的解构1
    ......