LeetCode 33题:搜索旋转排序数组

news2025/2/24 20:34:39

目录

题目

思路

代码

暴力解法

分方向法

二分法


题目

整数数组 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) 的算法解决此问题。

示例 1:

输入:nums = [4,5,6,7,0,1,2], target = 0
输出:4

示例 2:

输入:nums = [4,5,6,7,0,1,2], target = 3
输出:-1

示例 3:

输入:nums = [1], target = 0
输出:-1

提示:

  • 1 <= nums.length <= 5000
  • -104 <= nums[i] <= 104
  • nums 中的每个值都 独一无二
  • 题目数据保证 nums 在预先未知的某个下标上进行了旋转
  • -104 <= target <= 104

思路

不考虑要求时间复杂度为 O(log n) 的算法的话

  • 可以暴力解法,直接从开始往后遍历。
  • 也可以先比较nums[ 0 ],判断是否与target相等,相等就直接返回0,如果大于target,则从后往前遍历,否则从前往后遍历。

考虑时间复杂度可以利用二分法查找。

代码

暴力解法

int search(int* nums, int numsSize, int target)
{
    int i;
    for(i =0; i < numsSize; i++ )
    {
        if(nums[i]== target)
        {
            return i;
        }
    }
    return -1;
}

 

 我只不过不 李姐 理解为什么暴力解法的数据不算差。 

分方向法

int search(int* nums, int numsSize, int target)
{
    if(nums[0]<target)
    {
        int i;
        for(i=0;i<numsSize&&target>nums[i];i++);
        if(target==nums[i]&&i<numsSize)
        {
            return i;
        }
    }
    else if(nums[0]>target)
    {
        int i;
        for( i=numsSize-1;i>=0&&target<nums[i];i--);
        if(target==nums[i]&&i>=0)
        {
            return i;
        }        
    }
    else return 0;
    return -1; 
}

 

 

二分法

#include<stdio.h>
#include<stdlib.h>

int dichsearch(int nums[],int low,int high,int target);
int search(int* nums, int numsSize, int target);

int main()
{
    int nums[7]={4,5,6,7,0,1,2};
    printf("%d",search(nums,7,0));
}

int search(int* nums, int numsSize, int target)
{
    int t;
    for(t=0;t<numsSize-1&&nums[t]<nums[t+1];t++);
    if(nums[0]<target)
    {
        return dichsearch(nums,0,t,target);
    }
    else if(nums[0]>target)
    {
        return dichsearch(nums,t+1,numsSize-1,target);
    }
    else return 0;
}

int dichsearch(int nums[],int low,int high,int target)
{
    while(low<=high)
    {
        int mid=(low+high)/2;
        if(nums[mid]<target)
        low=mid+1;
        else if(nums[mid]>target)
        high=mid-1;
        else return mid;
    }
    return -1;
}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/863291.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Macbook pro、air、imac 在打字好卡,延迟特别严重,要怎么解决?

MacBook pro在打字好卡&#xff0c;延迟特别严重&#xff0c;到底是什么问题呢&#xff1f;卡的死&#xff0c;打个字要反应很久很久才能响应过来&#xff0c;这不是我理想中的macbook pro。以前也没有这样的问题&#xff0c;找找原因。 上网逛了一圈&#xff0c;发现大家都说…

自动切换HTTP爬虫ip助力Python数据采集

在Python的爬虫世界里&#xff0c;你是否也被网站的IP封锁问题困扰过&#xff1f;别担心&#xff0c;我来教你一个终极方案&#xff0c;让你的爬虫自动切换爬虫ip&#xff0c;轻松应对各种封锁和限制&#xff01;快来跟我学&#xff0c;让你的Python爬虫如虎添翼&#xff01; 首…

@Transactional 注解下,事务失效的七种场景

文章目录 1、异常被捕获后没有抛出2、抛出非运行时异常3、方法内部直接调用4、新开启一个线程5、注解到private方法上6、数据库本身不支持7、事务传播属性设置错误 Transactional是一种基于注解管理事务的方式&#xff0c;spring通过动态代理的方式为目标方法实现事务管理的增强…

腾讯云服务器镜像操作系统大全_Linux_Windows清单

腾讯云CVM服务器的公共镜像是由腾讯云官方提供的镜像&#xff0c;公共镜像包含基础操作系统和腾讯云提供的初始化组件&#xff0c;公共镜像分为Windows和Linux两大类操作系统&#xff0c;如TencentOS Server、Windows Server、OpenCloudOS、CentOS Stream、CentOS、Ubuntu、Deb…

Python基础小项目

今天给大家写一期特别基础的Python小项目&#xff0c;欢迎大家支持&#xff0c;并给出自己的完善修改 &#xff08;因为我写的都是很基础的&#xff0c;运行速率不是很好的 目录 1. 地铁票价题目程序源码运行截图 2. 购物车题目程序源码运行截图 3. 名片管理器题目程序源码运行…

应用程序运行报错:First section must be [net] or [network]:No such file or directory

应用程序报错环境&#xff1a; 在linux下&#xff0c;调用darknet训练的模型&#xff0c;报错&#xff1a;First section must be [net] or [network]:No such file or directory&#xff0c;并提示&#xff1a;"./src/utils.c:256: error: Assertion 0 failed." 如…

GAMES101:作业1记录

主要记录一下GAMES101作业的记录和思考。 1 总览2. 代码编写get_model_matrix(float rotation_angle)get_projection_matrix(float eye_fov,float aspect_ratio,float zNear,f1 oat zFar)进阶代码 Eigen::Matrix4f get_model_matrix_anyaxis(Vector3f axis, float angle) 3. 其…

如何学习嵌入式软件开发?

首先就是认知和基础阶段的学习。这部分一般都是要求学习一些行业认知类的课程&#xff0c;指导嵌入式未来的发展前景和就业趋势&#xff0c;C语言的入门&#xff0c;开发工具的使用&#xff0c;常见的命令&#xff0c;数据结构算法等内容。这一部分主要的就是要靠记忆力&#x…

odoo-034 float 浮点数比较

文章目录 前提问题解决总结 前提 odoo 版本&#xff1a;13 python&#xff1a;3.6.9 问题 比较销售订单行中已送货跟已开票&#xff0c;在 tree 视图显示搜索后的结果。发现搜索条件为已送货 > 已开票时&#xff0c;结果中会包含已送货已开票的。 解决 把这两个值打印出…

【ARM 调试】如何从 crash 信息找出问题原因

一、问题背景 粉丝在进行 ARM-A 系列软件编程时遇到以下问题&#xff0c;串口打印这段日志后就重启了&#xff0c;粉丝求助问是什么原因&#xff1f; Unhandled Exception in EL3. x30 0x0000000000b99b84 x0 0x00000000179a25b0 x1 …

【LeetCode】1572.矩阵对角线元素的和

题目 给你一个正方形矩阵 mat&#xff0c;请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1&#xff1a; 输入&#xff1a;mat [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;25 解释&#xff1a;对角线的和为&a…

『向阳花赠书活动 | 第一期』《互联网广告系统:架构、算法与智能化》

大家好&#xff0c;我是向阳花&#xff0c;数据科学路上&#xff0c;与你同行。&#x1f680; 个人主页&#xff1a;向阳花个人主页 声明&#xff1a;赠书活动是博主与出版社达成合作&#xff0c;为粉丝专属福利&#xff0c;免费参与&#xff0c;非粉丝中奖不算&#xff01; 『…

Server - WandB 统计运行 Epoch 以及 手动上传日志

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132227253 WandB (Weights & Biases) 是在线的模型训练可视化工具&#xff0c;可以帮助跟踪机器学习项目&#xff0c;记录运行中的超参数和输…

yum仓库简介

yum仓库网络服务 一.yum仓库简介二.yum配置文件2.1yum主配置文件2.2仓库设置2.3日志文件 三.yum命令详解3.1查询软件包命令3.2查询软件包组命令3.3yum安装升级3.4软件卸载 四.搭建yum仓库4.1 http方式搭建仓库 一.yum仓库简介 yum是基于RPM包构建的软件更新机制&#xff0c;能够…

从初学者到专家:Java运算符的完整指南

目录 1.算数运算符 2.增量运算符 2.1自增/自减运算符 4. 逻辑运算符 5.位运算符 6.移位运算符 7. 条件运算符 导言&#xff1a; Java作为一门广泛使用的编程语言&#xff0c;其运算符是编写代码时必不可少的一部分。本篇博客将为你详细介绍Java中的各种运算符&#xf…

【AndV】ant-design-vue中select使用mode=“combobox“无效:

文章目录 一、问题:二、解决: 一、问题: Warning: [antdv: Select] The combobox mode of Select is deprecated,it will be removed in next major version,please use AutoComplete instead 二、解决: 将mode"combobox"改为mode"SECRET_COMBOBOX_MODE_DO_NOT_…

Docker启动一个Centos镜像

搜索可用的centos的docker镜像 docker search <image>&#xff1a;在docker index中搜索imagedocker search centos 下载centos镜像&#xff08;拉取镜像&#xff09; docker pull centos:latest查看镜像docker images&#xff1a;列出imagesdocker images -a&#xff…

Paddle OCR V4 测试Demo

效果 项目 VS2022.net4.8OCRV4 代码 using OpenCvSharp; using Sdcb.PaddleInference; using Sdcb.PaddleOCR; using Sdcb.PaddleOCR.Models; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; usin…

java连接sqlserver细节处理

这个文章记录一下java连接sqlserver细节处理 &#xff0c;有其他的细节可以评论。 首先是 驱动 driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriverpom文件 将mysql的改成这个 <!-- 数据库驱动 --><dependency><groupId>com.microsoft.sqlserve…

iOS字体像素与磅的对应关系

注意&#xff1a;低于iOS10的系统&#xff0c;显示的字宽和字高比高于iOS10的系统小。 这就是iOS10系统发布时&#xff0c;很多app显示的内容后面出现…&#xff0c;因而出现很多app为了适配iOS10系统而重新发布新版本。 用PS设计的iOS效果图中&#xff0c;字体是以像素&#x…