博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lintcode :搜索旋转排序数组
阅读量:6432 次
发布时间:2019-06-23

本文共 1779 字,大约阅读时间需要 5 分钟。

题目

假设有一个排序的按未知的旋转轴旋转的数组(比如,0 1 2 4 5 6 7 可能成为4 5 6 7 0 1 2)。给定一个目标值进行搜索,如果在数组中找到目标值返回数组中的索引位置,否则返回-1。

你可以假设数组中不存在重复的元素。

样例

给出[4, 5, 1, 2, 3]和target=1,返回 2

给出[4, 5, 1, 2, 3]和target=0,返回 -1

解题

直接找,时间复杂度O(N)

class Solution:    """    @param A : a list of integers    @param target : an integer to be searched    @return : an integer    """    def search(self, A, target):        # write your code here        if A == None:            return -1        l = len(A)        for i in range(l):            if A[i]==target:                return i        return -1

这里题目说了是有序的数组进行了旋转,为什么直接遍历这个蠢的方法?已知是排序的,只是进行了旋转,能否用二分法?

public class Solution {    /**      *@param A : an integer rotated sorted array     *@param target :  an integer to be searched     *return : an integer     */     public int search(int[] A, int target) {        if (A == null || A.length == 0) {            return -1;        }        int start = 0;        int end = A.length - 1;        int mid;                while (start + 1 < end) {            mid = (end + start) / 2;            if (A[mid] == target) {                return mid;            }            if (A[start] < A[mid]) { // 左边升序                // situation 1, red line                if (A[start] <= target && target <= A[mid]) {                    end = mid;                } else {                    start = mid;                }            } else { // 右边升序                // situation 2, green line                if (A[mid] <= target && target <= A[end]) {                    start = mid;                } else {                    end = mid;                }            }        } // while                if (A[start] == target) {            return start;        }        if (A[end] == target) {            return end;        }        return -1;    }}

 

 

转载地址:http://cwxga.baihongyu.com/

你可能感兴趣的文章
大整数比较大小
查看>>
八大排序算法的Java实现
查看>>
IDEA+Maven+Tomcat构建项目流程
查看>>
数据是重要的战略资源,数据同样是产品非常重要的组成部分。淘宝对中国最大的贡献,不只是方便了老百姓购物,而是把中国消费者的消费习惯数据慢慢沉淀下来。...
查看>>
Leetcode Find Minimum in Rotated Sorted Array
查看>>
Python接口测试-使用requests模块发送post请求
查看>>
System.currentTimeMillis()计算方式与时间的单位转换
查看>>
Extra:Variable Types
查看>>
js传参时,没有参数传入,默认值的设置
查看>>
ASP.NET温故而知新学习系列之ASP.NET多线程编程—.NET下的多线程编程Thread中委托的使用(六)...
查看>>
最新整理知识结构图
查看>>
linux安装mysql
查看>>
flask 2 进阶
查看>>
sentences in movies and teleplays[1]
查看>>
【20181023T1】战争【反向并查集】
查看>>
win7网络共享原来如此简单,WiFi共享精灵开启半天都弱爆了!
查看>>
iOS9 未受信任的企业级开发者
查看>>
paper 40 :鲁棒性robust
查看>>
优化MySchool数据库(事务、视图、索引)
查看>>
使用笔记:TF辅助工具--tensorflow slim(TF-Slim)
查看>>