剑指11题解 | #旋转数组的最小数字#
旋转数组的最小数字
https://www.nowcoder.com/practice/9f3231a991af4f55b95579b44b7a01ba
#include <algorithm>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @return int整型
*/
int minNumberInRotateArray(vector<int>& nums) {
// write code here
// 对于题目的已知条件,旋转后数组,第一个值 >= 最后一个值
// 那么,遍历过程中,碰到第一个比上一个小的就是所需的最小值
// int tmp = nums[0];
// for(int i = 0; i < nums.size(); ++i)
// {
// if(nums[i] >= tmp)
// {
// tmp = nums[i];
// }else{
// return nums[i];
// }
// }
// return tmp; // 该方法,测试用例[1,2,2,2,2]通过不了,目测这个测试用例也是有问题的~
// // 二分法
// int l = 0;
// int r = nums.size() - 1;
// int mid;
// while (l < r) {
// mid = (l + r) /2;
// if(nums[mid] > nums[r])
// {
// // std::cout << " min 在右侧,更新l " << nums[mid]<< std::endl;
// l = mid + 1;
// }else if(nums[mid] == nums[r]){ // 容易漏掉这么一种情况
// r--;
// }
// else{
// // std::cout << " min 在左侧,更新r " << nums[mid]<< std::endl;
// r = mid;
// }
// // std::cout << l << " " << r << " " << mid << std::endl;
// }
// return nums[l];
// 狗头做法,嘻嘻
sort(nums.begin(), nums.end());
return nums[0];
}
};
挤挤刷刷! 文章被收录于专栏
记录coding过程
查看14道真题和解析
