最好想的一种解决方式

旋转数组的最小数字

http://www.nowcoder.com/questionTerminal/9f3231a991af4f55b95579b44b7a01ba

有这样的一个思路:设置一个参数i另一个参数i+1,这样就成了一个前面的一个后面的,如果后面的比前面的小那么一定就是后面的这个元素是最小值。因为旋转之后是部分部分的非递减的。就算是10111这样的例子,第一次判断0是小于1的直接就返回0可以了。
import java.util.ArrayList;
public class Solution {
public int minNumberInRotateArray(int [] array) {
if(array.length==0){
return 0;
}
if(array.length==1){
return array[0];
}
for(int i=0;i<array.length;i++){
if(array[i]>array[i+1]){
return array[i+1];
}
}
return 0;
}
}

全部评论
我也是这么想的,但后来发现这样的复杂度没有降下去,还是O(n)
2 回复 分享
发布于 2020-06-20 17:35
for循环那里有问题把,i
点赞 回复 分享
发布于 2021-03-07 14:35
这样还真可以通过,保持怀疑
点赞 回复 分享
发布于 2020-09-08 10:02
对~就直接一个一个的比较~谢谢您的分析和指导
点赞 回复 分享
发布于 2020-06-08 11:46
不如直接一个一个比较是不是最小值。 都是O(N) 复杂度 还不需要考虑特殊情况
点赞 回复 分享
发布于 2020-05-15 09:04
如果输入是[2,2,2,2]呢?
点赞 回复 分享
发布于 2020-04-28 18:47

相关推荐

点赞 评论 收藏
分享
评论
4
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务