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

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

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).

Find the minimum element.

You may assume no duplicate exists in the array.

思路:这题用分治。

主要方法是,判断区间两端以及中点处三个数的大小。

一共有3种情况:

1)nums[left] < nums[mid] < nums[right],很明显,这种情况下是没有rotate的,nums[left]就是最小。

2)nums[right] < nums[left] < nums[mid], 这种情况下断层在右半区间内。

3) nums[left] > nums[right] > nums[mid], 这种情况下断层在左半区间内。

算法复杂度为O(logn)

1 class Solution { 2 public: 3     int findRes(int left, int right, vector
& nums) 4 { 5 if (left == right) return nums[left]; 6 int mid = (left + right) >> 1; 7 if (mid == left) 8 return nums[mid] < nums[right] ? 9 nums[mid] : nums[right];10 if (nums[left] < nums[mid] && nums[mid] > nums[right])11 return findRes(mid + 1, right, nums);12 else if (nums[left] < nums[mid] && nums[mid] < nums[right])13 return nums[left];14 else15 return findRes(left, mid, nums);16 }17 int findMin(vector
& nums) {18 return findRes(0, nums.size() - 1, nums);19 }20 };

 

转载于:https://www.cnblogs.com/fenshen371/p/4919255.html

你可能感兴趣的文章
javaweb之MVC设计模式
查看>>
[APIO2015]巴厘岛的雕塑
查看>>
使用Code First模式开发如何更新数据库(转载)
查看>>
Mybatis实例增删改查(二)
查看>>
android:inputType参数类型说明
查看>>
使用泛型迭代Map集合
查看>>
Cut 'em all! CodeForces - 982C(贪心dfs)
查看>>
sqoop导出工具
查看>>
Codeforces Round #376 (Div. 2)
查看>>
Codeforces 607D Power Tree 线段树 (看题解)
查看>>
【LeetCode 33】Search in Rotated Sorted Array
查看>>
转载-asp.net id 和name的区别
查看>>
sqlsever 科学计数法e 问题
查看>>
2015年蓝桥杯省赛A组c++第1题
查看>>
解决CentOS缺少共享库
查看>>
写在人生的路上——2016年上半年总结
查看>>
hat linux下vnc的安装
查看>>
Perl Nmap处理脚本
查看>>
[BZOJ4668]冷战(并查集)
查看>>
ajax提交表单+前端验证小示例
查看>>