剑指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过程