当前位置 博文首页 > WLSK801的博客:[leetCode刷题笔记]2017.03.30

    WLSK801的博客:[leetCode刷题笔记]2017.03.30

    作者:[db:作者] 时间:2021-08-02 12:37

    50. Pow(x, n)

    这道题要用递归,但是递归不能用一个个减,因为这样要是碰到很大的n的情况会有stack overflow error。所以要利用平方,一次变成n / 2。

    public class Solution {
        public double myPow(double x, int n) {
            if (n == 0) {
                return 1;
            }
            double powV = myPow(x, n / 2);
            if (n % 2 != 0) {
                if (n > 0) {
                    return x * powV * powV;
                }
                else {
                    return powV * powV / x;
                }
            }
            else {
                return powV * powV;
            }
        }
    }

    69. Sqrt(x)

    这道题也是用二分法。注意边界条件,还有要防止输入一个很大的数,所以要用long形式。

    public class Solution {
        public int mySqrt(int x) {
            if (x == 0 || x == 1) {
                return x;
            } 
            return (int)find(x, 0, x);
            
        }
        private long find(long x, long lo ,long hi) {
            if (lo == hi) {
                return hi - 1;
            }
            long mid = lo + (hi - lo) / 2;
            if (mid * mid > x) {
                return find(x, lo, mid);
            }
            else if (mid * mid < x){
                return find(x, mid + 1, hi);
            }
            else {
                return mid;
            }
        }
    }

    275. H-Index II

    二分法轻松·搞定

    public class Solution {
        public int hIndex(int[] citations) {
            int len = citations.length;
            int lo = 0;
            int hi = len - 1;
            while (lo <= hi) {
                int mid = (hi + lo) / 2;
                if (citations[mid] == len - mid) {
                    return len - mid;
                }
                else if (citations[mid] < len - mid) {
                    lo = mid + 1;
                }
                else {
                    hi = mid - 1;
                }
                
            }
            return len - lo;
        }
        
    }



    cs
    下一篇:没有了