[LeetCode] Search in Rotated Sorted Array [35]

[LeetCode] Search in Rotated Sorted Array [35]

大家好,又见面了,我是全栈君。

题目

Suppose a sorted array is rotated at some pivot unknown to you beforehand.

(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

You are given a target value to search. If found in the array return its index, otherwise return -1.

You may assume no duplicate exists in the array.

原题链接(点我)

解题思路

旋转数组中的查找。

[1, 2, 3, 4, 5, 6]的一个旋转数组为[4, 5, 6, 1, 2, 3]。在旋转数组中寻找一个数。
最直接的方法。一次遍历。时间复杂度O(n)。可是既然是一个部分有序的数组,那么对于有序的部分我们能够想方法用二分查找。这个能够提高效率。

代码实现

class Solution {
public:
    int search(int A[], int n, int target) {
        if(A==NULL || n<=0) return -1;
        int begin = 0, end = n-1;
        while(begin<=end){
            int mid = begin + (end-begin)/2;
            if(A[mid] == target)
                return mid;
            if(A[mid] > A[end]){
                //前半段
                if(A[begin]<=target && A[mid] > target){
                    //target 在 begin 和 mid-1 之间
                    end = mid-1;
                }else{
                    begin = mid+1;
                }
            }else if(A[mid] < A[end]){
                //在后半段
                if(A[mid] < target && A[end] >=target){
                    //target 在 mid+1 和 end 之间
                    begin = mid+1;
                }else{
                    end = mid-1;
                }
            }else{
                // 由于这个题数组中不含有反复元素,此时begin==end==mid而且A[mid]!=target。所以不存在
                break;
            }
        }
        return -1;
    }
};

假设你认为本篇对你有收获,请帮顶。


另外,我开通了微信公众号–分享技术之美,我会不定期的分享一些我学习的东西.
你能够搜索公众号:
swalge
 或者扫描下方二维码关注我
[LeetCode] Search in Rotated Sorted Array [35]
(转载文章请注明出处: http://blog.csdn.net/swagle/article/details/30471141 )

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115876.html原文链接:https://javaforall.net

(0)
上一篇 2022年1月29日 上午10:00
下一篇 2022年1月29日 上午11:00


相关推荐

  • thinkphp集成editormd一系列实战

    thinkphp集成editormd一系列实战介绍最近 php 搞了个博客 需要集成 markdown 编辑器 富文本的太 low 了 效率也低 用的是时下比较火的 editormd 除了基本的文档编辑我这里还实现了几个自己的需求 使用 ctrl v 实现将图片粘贴到 markdown 编辑器实现前台复制代码 有需要的找我要 效果展示编辑器前台展示后台集成引入资源 editormd

    2026年3月18日
    1
  • eplan永久激活码[最新免费获取]

    (eplan永久激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月29日
    3.0K
  • p6spy oracle,MyBatis集成P6Spy显示实际的SQL(代码教程)「建议收藏」

    p6spy oracle,MyBatis集成P6Spy显示实际的SQL(代码教程)「建议收藏」在应用程序开发过程中,为了方便调试,通常都需要知道在DAO层,程序执行的SQL是什么,而P6spy这个组件正是提供了该功能。接下来将详细介绍P6Spy的详细使用。一系统集成P6spy1添加依赖3.6.01.1.6p6spyp6spy${p6spy.version}com.alibabadruid${druid.version}2实现自定义的SQL输出格式为了输出的内容足够的简洁,这里只保留了…

    2026年4月16日
    5
  • Pytest(11)allure报告「建议收藏」

    Pytest(11)allure报告「建议收藏」前言allure是一个report框架,支持java的Junit/testng等框架,当然也可以支持python的pytest框架,也可以集成到Jenkins上展示高大上的报告界面。mac环境:

    2022年7月30日
    8
  • html的网页代码_html字体代码大全

    html的网页代码_html字体代码大全常用HTML代码解释 一、文字1.标题文字&lt;h#&gt;……….&lt;/h#&gt;#=1~6;h1为最大字,h6为最小字 2.字体变化&lt;font&gt;……….&lt;/font&gt;【1】字体大小&lt;fontsize=#&gt;……….&lt;/font&gt;#=1~7;数字愈大字也愈大【2】指定字型&lt;fontface=…

    2026年2月24日
    4
  • qtcpsocket编程_qtcpsocket判断连接状态

    qtcpsocket编程_qtcpsocket判断连接状态QTcpSocket和QTcpServer类实现了Qt的Tcp客户端和服务器。 tcp是一个流式协议。对于应用程序来说,数据是一个很长的流,有点像一个巨大的文件。 搞成此的协议建立在面向块的tcp协议(Block-oriented)或面向行(Line-oriented)的tcp协议上。 面向块的tcp协议,数据被当作一个2进制的块来传输。没每一个块被当作一个定义了大小的,后面

    2025年10月10日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号