前言
经过前期的基础训练以及部分实战练习,粗略掌握了各种题型的解题思路。现阶段开始专项练习。
数论包含最大公约数(>=2个数)、最大公约数性质、最小公倍数、区间范围质因素计数(最下间隔)、质因素分解、判断质数、平方根、立方根、互质、同余等等。
描述
给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回
true
;否则,返回false
。整数
n
是 3 的幂次方需满足:存在整数x
使得n == 3x
示例 1:
输入:n = 27 输出:true示例 2:
输入:n = 0 输出:false示例 3:
输入:n = 9 输出:true示例 4:
输入:n = 45 输出:false提示:
-231 <= n <= 231 - 1
实现原理与步骤
1.在n%3大于0的情况下不断除以3。
2.最后n为1的情况下则是3的幂。
实现代码(按模分组)
class Solution {
public boolean isPowerOfThree(int n) {
while(n>=3&&n%3==0){
n/=3;
}
return n==1;
}
}
实现代码(枚举超时)
class Solution {
public int destroyTargets(int[] nums, int space) {
int res = Integer.MAX_VALUE;
int maxCount = 0;
for (int i = 0; i < nums.length; i++) {
int temp = 0;
for (int j = 0; j < nums.length; j++) {
if (i != j) {
if (Math.abs(nums[j] - nums[i]) % space == 0) {
temp++;
}
}
}
if (temp > maxCount) {
maxCount = temp;
res = nums[i];
} else if (temp == maxCount) {
res = Math.min(res, nums[i]);
}
}
return res;
}
}