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

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

思路:

依旧借用二叉搜索的方法,使用rank()函数。题目假设没有重复数字,可以肯定的是,循环结束是因为while条件不满足。此时必定有,将nums[i]>key不成立,在此前,nums[i]>key是一定成立的。

所以 i 是,像 “4 5 6 7”这样序列后移一位的下标,如果是序列是升序,没有翻转,i会会越界,注意判断。

if(nums[mid]>key) i=mid+1;

题目:

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

Find the minimum element.

You may assume no duplicate exists in the array.

class Solution {public:    int findMin(vector
& nums) { int len=nums.size(); if(len==1) return nums[0]; int key=nums[0]; int i=1; int j=len-1; int mid; while(i<=j) { mid=(j-i)/2+i; if(nums[mid]>key) i=mid+1; else j=mid-1; } if(i>=len) return nums[0]; //防止没有翻转 return nums[i]; } };

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

你可能感兴趣的文章
Linux/Unix环境下的make和makefile详解
查看>>
SourceInsight添加对汇编语言文件.s和.S的支持
查看>>
windows 下实现函数打桩:拦截API方式
查看>>
获取Windows系统版本
查看>>
漫谈兼容内核之十二:Windows的APC机制
查看>>
21.windbg-.lastevent、!analyze(dump分析、异常错误码查询)
查看>>
16.windbg-.frame、dt(切换局部上下文、查找结构体)
查看>>
开源任务管理器 Process Hacker (Windows)
查看>>
快速发现Windows中毒的工具:Process Hacker
查看>>
Process Hacker源码中的用户态hook的做法
查看>>
Get IT技能知识库 50个领域一键直达
查看>>
浅析C++中的this指针及汇编实现
查看>>
关于32位程序在64位系统下运行中需要注意的重定向问题(有图有真相)(***)
查看>>
解决win10系统中截图异常放大的问题
查看>>
关于Windows高DPI的一些简单总结
查看>>
tlb文件为何而生?
查看>>
IE9 GPU硬件加速到底是实用创新还是噱头
查看>>
几种TCP连接中出现RST的情况
查看>>
IAAS、SAAS 和 PAAS 的区别、理解
查看>>
RichEdit对ole 对象的相关支持总结
查看>>