0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言: Leetcode 33搜索旋转排序数组

如意 来源:CSDN 作者:CaspianSea 2020-06-22 08:51 次阅读

假设按照升序排序的数组在预先未知的某个点上进行了旋转。

( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。

搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -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

解法1:如果是 left 《 right,就是有序数组,用二分来处理;否则,target可能落在 left~mid和mid~right两个区间内。

如果 left 《= target 《=mid 或者 left 》 mid 并且 target 》= left 或者 target 《= mid,则落在左区间。类似的可得出落在右区间的条件。

C语言: Leetcode 33搜索旋转排序数组

思路2: 先考虑target落在 left~mid的情况,然后再考虑落在 mid~right的情况。而每个区间又要考虑是不是有序的。

C语言: Leetcode 33搜索旋转排序数组

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7522

    浏览量

    127517
  • leetcode
    +关注

    关注

    0

    文章

    20

    浏览量

    2302
收藏 人收藏

    评论

    相关推荐

    labview对数组排序的方法

    `数组排序是经常用到的,LABVIEW提供了对一维数组排序节点.这是个多态VI,支持多种数据类型,包括簇,如果是簇数组,它首先按照第一个元
    发表于 11-21 17:37

    帮忙看看:数字排序数组

    如何按照图中数字排序数组簇~~谢谢
    发表于 06-12 10:45

    常用排序法之一 ——冒泡排序法和选择排序

    语言中,常用的算法有:冒泡排序、快速排序、插入排序、选择排序、希尔排序、堆
    发表于 11-01 12:25

    C语言常用排序方法大全

    C语言常用排序方法大全
    发表于 11-07 17:10

    PHP数组排序

    数组排序(6个) sort() - 以升序对数组排序rsort() - 以降序对数组排序 rev
    发表于 11-04 07:48

    请问LeetCode448如何找到所有数组中消失的数字?

    LeetCode448如何找到所有数组中消失数字的方法
    发表于 11-05 07:46

    C语言泛型编程是如何实现对数组中元素的线性搜索

    C语言泛型编程,实现对数组中元素的线性搜索
    发表于 01-20 06:36

    C语言教程之对数组进行升序和降序排序

    C语言教程之对数组进行升序和降序排序,很好的C语言资料,快来学习吧。
    发表于 04-25 16:09 0次下载

    c语言排序算法之选择排序

    法就是"先选后排"。假定待排序数字序列均为整数,且共有NUM个,大小随机排列,存放在list[NUM]中。        首先假定list[0]为序列中最小的数字,再依次拿它与list[1:NUM-1](该表达式意为list[1]至list[NUM-1]的序列)中的每一个数字做比较
    发表于 11-16 10:25 3313次阅读
    c<b class='flag-5'>语言</b><b class='flag-5'>排序</b>算法之选择<b class='flag-5'>排序</b>法

    二维数组重新排序

    labview进行二维数组的重新排序
    发表于 12-12 15:15 9次下载

    C语言leetcode 35搜索插入位置

    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
    的头像 发表于 06-22 08:40 1489次阅读
    C<b class='flag-5'>语言</b>:<b class='flag-5'>leetcode</b> 35<b class='flag-5'>搜索</b>插入位置

    C语言LeetCode 153寻找旋转排序数组中的最小值

    假设按照升序排序数组在预先未知的某个点上进行了旋转
    的头像 发表于 06-22 08:59 1600次阅读
    C<b class='flag-5'>语言</b>:<b class='flag-5'>LeetCode</b> 153寻找<b class='flag-5'>旋转</b><b class='flag-5'>排序数组</b>中的最小值

    C语言排序中快速排序的技巧

    Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。 算法步骤: 1 从数列中挑出一个元素,称为 “基准”(pivot)。 2 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后
    的头像 发表于 07-29 15:14 2264次阅读
    C<b class='flag-5'>语言</b><b class='flag-5'>排序</b>中快速<b class='flag-5'>排序</b>的技巧

    C语言总结_数组全方位练习

    C语言数组的练习题:涉及到数组插入、数组删除、数组下标数据的左移右移、数组
    的头像 发表于 08-14 09:34 653次阅读

    C语言_数组的查找、替换、排序、拼接

    这篇文章主要是总结C语言的位运算几个实战例子,接着介绍数组的基本定义用法、数组排序、插入、拼接、删除、字符串查找替换等。
    的头像 发表于 08-14 09:48 2127次阅读