[学习报告]《LeetCode零基础指南》(第三讲) 循环

1.求1+2+…+n
求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)

/**求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)*/
class Solution {
    
    
    public int sumNums(int n) {
    
    
        boolean m = n > 1 && (n += sumNums(n - 1)) > 0;
        return n;
    }
}//时间复杂度:O(n)

2.2 的幂
给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。
如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。

/*
1.给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。
2.如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。 */
class Solution {
    
    
    public boolean isPowerOfTwo(int n) {
    
    
        return n > 0 && (n & (n - 1)) == 0;
    }
}//时间复杂度:O(1)

3.3的幂
给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。
整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3^x

/***
给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 
整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3^x
 */
class Solution {
    
    
    public boolean isPowerOfThree(int n) {
    
    
        while (n != 0 && n % 3 == 0) {
    
    
            n /= 3;
        }
        return n == 1;
    }
}//时间复杂度:O(1)

4.4的幂
给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。
整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4^x

/**给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。
整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x*/
class Solution {
    
    
    public boolean isPowerOfFour(int n) {
    
    
        while (n != 0 && n % 4 == 0) {
    
    
            n /= 4;
        }
        return n == 1;
    }
}//时间复杂度:O(1)

5.n 的第 k 个因子
给你两个正整数 n 和 k 。如果正整数 i 满足 n % i == 0 ,那么我们就说正整数 i 是整数 n 的因子。
考虑整数 n 的所有因子,将它们 升序排列 。请你返回第 k 个因子。如果 n 的因子数少于 k ,请你返回 -1 。

/**给你两个正整数 n 和 k 。
如果正整数 i 满足 n % i == 0 ,那么我们就说正整数 i 是整数 n 的因子。
考虑整数 n 的所有因子,将它们 升序排列 。请你返回第 k 个因子。如果 n 的因子数少于 k ,请你返回 -1 。 */
class Solution {
    
    
    public int kthFactor(int n, int k) {
    
    
        int count = 0;
        for(int i = 1; i <= n ; i++){
    
    
            if(n % i == 0){
    
    
                count++;
                if(count == k){
    
    
                    return i;
                }
            }
        }
        return -1;
    }
}//时间复杂度:O(n)

6.有效的完全平方数
给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。进阶:不要 使用任何内置的库函数,如 sqrt 。

/**给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。
进阶:不要 使用任何内置的库函数,如  sqrt  */
class Solution {
    
    //二分
    public boolean isPerfectSquare(int num) {
    
    
        int low = 1, high = num;
        while (low <= high){
    
    
            int mid = (high - low) / 2 + low;
            int temp = num / mid;
            if(temp == mid){
    
    
                return (num % mid == 0);
            }else if (temp < mid){
    
    
                high = mid - 1;
            }else {
    
    
                low = mid + 1;
            }
        }
        return false;
    }
}//时间复杂度:O(log⁡n)

猜你喜欢

转载自blog.csdn.net/qq_52230126/article/details/121508135