版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hsx1612727380/article/details/85921950
Title:Guess Number Higher or Lower 374
Difficulty:Easy
原题leetcode地址: https://leetcode.com/problems/guess-number-higher-or-lower/
1. 基本的一次遍历
时间复杂度:O(n),一层for循环。
空间复杂度:O(n),没有申请额外空间。
/**
* 一集基本遍历
* @param n
* @return
*/
public static int guessNumber(int n) {
for (int i = 0; i <= n; i++) {
if (guess(i) == 0) {
return i;
}
}
return n;
}
2. 二分法
时间复杂度:O(logn),一层while循环。
空间复杂度:O(n),没有申请额外空间。
/**
* 二分法
* @param n
* @return
*/
public static int guessNumber2(int n) {
int start = 1;
int end = n;
while (start < end) {
int mid = start + (end - start) / 2;
int tmp = guess(mid);
if (tmp == 0) {
return mid;
}
else if (tmp < 0) {
end = mid;
}
else {
start = mid + 1;
}
}
return start;
}