leetcode——33——Search in Rotated Sorted Array
2016-04-19 20:44
453 查看
Suppose a sorted array is rotated at some pivot unknown to you beforehand.
(i.e.,
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.
(i.e.,
0 1 2 4 5 6 7might 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.
class Solution { public: int search(vector<int>& nums, int target) { // 初始问题 int l = 0, r = nums.size() - 1; // 不断重复来缩小问题规模 while (l < r) { // 取中点,分情况讨论 int m = (l + r) / 2; // 情况0 if (target == nums[m]) return m; // 情况1 if (nums[l] < nums[r]) { if (target > nums[m]) l = m + 1; if (target < nums[m]) r = m - 1; } else { // 情况2.1 if (nums[m] >= nums[l]) { if (target > nums[m] || target < nums[l]) { l = m + 1; } else { r = m - 1; } } // 情况2.2 else { if (target < nums[m] || target > nums[r]) { r = m - 1; } else { l = m + 1; } } } } // 计算答案 if (l == r && nums[l] == target) return l; return -1; } };
相关文章推荐
- _EPROCESS结构简单了解!
- 新手用linux的记录(centOS6.5)
- JAVA——abstract(抽象)
- Sping+ActiveMQ整合
- Oracle 索引 详解
- 畅通工程
- 解决Android页面跳转过程中黑屏时间过长问题
- UVA 10066 The Twin Towers
- 碎碎念-简单回顾一下最近的工作
- 面试题:1+11+111+1111+...+(2016个1)结果中含有多个6
- POJ 迷宫问题+基础bfs
- 数据库设计三大范式
- 【C++】复数类
- 计算机视觉、机器学习相关领域论文和源代码大集合--持续更新……
- 架构设计:系统间通信——提高ActiveMQ工作性能(下)
- T420添加内存与更换硬盘图文参照 (转)
- 各种JS模板引擎对比数据(高性能JavaScript模板引擎)
- Matlab中rand('state',sum(clock))解析
- hdu——2602Bone Collector(第一类背包问题)
- 【java项目实战】dom4j解析xml文件,连接Oracle数据库