博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
33. Search in Rotated Sorted Array
阅读量:5924 次
发布时间:2019-06-19

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

Suppose an array sorted in ascending order 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.
Your algorithm's runtime complexity must be in the order of O(log n).

Example 1:Input: nums = [4,5,6,7,0,1,2], target = 0Output: 4Example 2:Input: nums = [4,5,6,7,0,1,2], target = 3Output: -1

难度:medium

题目:假设一个按升序排序的数组在某个未知的轴上旋转。

给定一个搜索值,如果能找到则返回其所在数组中的位置,否则返回-1. 假定数组中无重复元素。算法时间复杂度要为O(log n)

思路:二叉搜索

Runtime: 10 ms, faster than 21.83% of Java online submissions for Search in Rotated Sorted Array.

Memory Usage: 26.8 MB, less than 41.44% of Java online submissions for Search in Rotated Sorted Array.

class Solution {    public int search(int[] nums, int target) {        int left = 0;         int right = nums.length - 1;        while (left <= right) {            int mid = left + (right - left) / 2;            if (target == nums[mid]) {                return mid;            }                        // left < mid  right            if (nums[left] < nums[mid]) {                if (target > nums[mid] || target < nums[left]) {                    left = mid + 1;                } else {                    right = mid - 1;                }            } else if (nums[left] > nums[mid]) { // left > mid  right                if (target < nums[mid] || target > nums[right]) {                    right = mid - 1;                } else {                    left = mid + 1;                }            } else { // left = mid                left += 1;            }        }                return -1;    }}

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

你可能感兴趣的文章
[译] 所有你需要知道的关于完全理解 Node.js 事件循环及其度量
查看>>
(六十九)复合语句
查看>>
我的友情链接
查看>>
设计模式:装饰者
查看>>
Java Web中实现Servlet的方式
查看>>
第三方库之 - SVProgressHUD
查看>>
11个让你吃惊的 Linux 终端命令
查看>>
Caused by: java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut
查看>>
MySQL与MongoDB的操作对比
查看>>
# 180111php编译错误
查看>>
EIGRP 查看邻居命令详解
查看>>
js闭包
查看>>
度量时间差
查看>>
网络营销与电子商务
查看>>
可输入的模糊搜索ComBox控件
查看>>
MySQL 5.6为什么关闭元数据统计信息自动更新&统计信息收集源代码探索
查看>>
Linux 下mysql永久更改字符集
查看>>
我的友情链接
查看>>
apache prefork模式优化错误
查看>>
jmeter高级用法例子,如何扩展自定义函数
查看>>