最好想的一种解决方式

旋转数组的最小数字

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
如果输入是[2,2,2,2]呢?
点赞 回复 分享
发布于 2020-04-28 18:47
不如直接一个一个比较是不是最小值。 都是O(N) 复杂度 还不需要考虑特殊情况
点赞 回复 分享
发布于 2020-05-15 09:04
对~就直接一个一个的比较~谢谢您的分析和指导
点赞 回复 分享
发布于 2020-06-08 11:46
这样还真可以通过,保持怀疑
点赞 回复 分享
发布于 2020-09-08 10:02
for循环那里有问题把,i
点赞 回复 分享
发布于 2021-03-07 14:35

相关推荐

11-18 15:57
门头沟学院 Java
最终归宿是测开:这个重邮的大佬在重邮很有名的,他就喜欢打92的脸,越有人质疑他,他越觉得爽😂
点赞 评论 收藏
分享
面试摇了我吧:啊哈哈面试提前五个小时发,点击不能参加就是放弃
点赞 评论 收藏
分享
4 1 评论
分享
牛客网
牛客企业服务