leetcode (Guess Number Higher or Lower)
阿新 • • 發佈:2019-01-06
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; }