当前位置: 首页 > article >正文

LeetCode Hot100 33.搜索旋转排序数组

题目

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

在传递给函数之前,nums 在预先未知的某个下标 k0 <= 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) 的算法解决此问题。

class Solution {
    public int search(int[] nums, int target) {
        if (nums == null || nums.length == 0) {
            return -1;
        }
        int start = 0;
        int end = nums.length - 1;
        int mid;
        while (start <= end) {
            mid = start + (end - start) / 2;
            if (nums[mid] == target) 
                return mid;
            // 前半部分有序, 注意此处用小于等于
            if (nums[start] <= nums[mid]) {
                // target在前半部分
                if (target >= nums[start] && target < nums[mid]){
                    end = mid - 1;
                } else {
                    start = mid + 1;
                }
            } else {
                if (target <= nums[end] && target > nums[mid]) {
                    start = mid + 1;
                } else {
                    end = mid - 1;
                }
            }
        }
        return -1;

    }
}


http://www.kler.cn/a/145153.html

相关文章:

  • 初二回娘家
  • 论文阅读(八):结构方程模型用于研究数量遗传学中的因果表型网络
  • Leetcode:350
  • MySQL备忘录
  • 大数据相关职位介绍之二(数据治理,数据库管理员, 数据资产管理师,数据质量专员)
  • C++/stack_queue
  • 【精选必看】MyBatis映射文件及动态SQL,一级,二级缓存介绍
  • 【广州华锐互动】Web3D云展编辑器能为展览行业带来哪些便利?
  • [Python人工智能] 四十.命名实体识别 (1)基于BiLSTM-CRF的威胁情报实体识别万字详解
  • Swagger在php和java项目中的应用
  • CentOS rpm安装Nginx和配置
  • FFmpeg常用命令讲解及实战二
  • 【Spring篇】spring核心——AOP面向切面编程
  • 鸿蒙原生应用/元服务开发-AGC分发如何上架HarmonyOS应用
  • openssl升级
  • JVM虚拟机:JVM调优第一步,了解JVM常用命令行参数
  • JsonRPC协议详解(协议介绍、请求示例、响应示例)
  • kafka学习笔记(一)--脑裂
  • 【statsmodels】快速实现回归预测
  • 【代码随想录】算法训练计划31
  • Docker ps命令
  • 浏览器没收到返回,后端也没报错,php的json_encode问题bug
  • 【开源】基于Vue+SpringBoot的农家乐订餐系统
  • ERROR: Could not find a version that satisfies the requirement torch
  • CAN通信协议
  • HOOPS Web平台助力开发3D应用,实现超大规模3D web轻量化渲染与数据格式转换!