leetcode (Guess Number Higher or Lower)

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;

    }

猜你喜欢

转载自blog.csdn.net/hsx1612727380/article/details/85921950