题目
求两个正整数的最大公约数,要求尽可能保证性能。
方法一:暴力枚举法
1 | public static int getGreatestCommonDivisor(int numA, int numB){ |
暴力枚举的效率比较低,如果传入10000和10001,则需要循环4900次。
dont be shy, just try!
求两个正整数的最大公约数,要求尽可能保证性能。
1 | public static int getGreatestCommonDivisor(int numA, int numB){ |
暴力枚举的效率比较低,如果传入10000和10001,则需要循环4900次。
实现一个方法,判断一个正整数是否是2的乘方(比如16是2的4次方,返回True;18不是2的乘方,返回False)。要求性能尽可能高。
创建一个中间变量Temp,初始值是1。然后进入一个循环,循环中每次让Temp和目标整数比较,如果相等,则说明目标整数是2的乘方;如果不相等,则让Temp增大一倍,继续循环比较。当Temp大于目标整数时,说明目标整数不是2的乘方。
如果目标整数的大小是N,则此方法的时间复杂度是O(LogN)。
1 | public static boolean isPowerOf2(int number){ |