您的位置:首页 > 其它

LintCode-分治-寻找旋转排序数组中的最小值 II

2017-09-28 16:08 375 查看
点此进入题目
解题思路:这道题是求数组的最小值,其实也可以用sort函数排序直接求,也可以用递归,我用的递归,而且用的办法挺简单的。将数组从中间分成两个,然后求俩个数组的最小值,然后比较两个数组的最小值,取最小值,返回就可以。
解题过程:给定一个vector<int>num数组,首先判断数组长度,若长度为一,直接返回即可;否则进入递归,将num分为a,b,两个数组,求a的最小值min,b的最小值m,然后比较min和m的值那个最小求最小值。
代码实现:int findMin(vector<int>&num) {
       int mid,l=num.size();
   if(l==1) return num[0];
   else{
       mid=l/2;
       vector<int>a,b;
       vector<int>::iterator ite;
       ite=num.begin();
       a.assign(num.begin(),ite+mid);
       b.assign(ite+mid,num.end());
       int min,m;
       min=findMin(a);
       m=findMin(b);
       
if(min>m) min=m;
       return min;
   
}
   
}
个人总结:这道题很简单,主要思路会了就行了。
注意事项:最后要比较min和m的值,而且要有返回值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: