[英]Powers of 3 for a given a positive integer A
给定一个正整数 A,返回一个最小长度的数组,其元素是 3 的幂,并且所有元素的总和等于 A。
对于输入 A = 13:
所以 A = 13 可以表示为 1、3 和 9 的总和。
有没有更好的方法来解决这个问题?
public static int[] getSolve(int A) {
List<Integer> binary = new ArrayList<>();
while (A > 0) {
int r = A % 3;
binary.add(r);
A /= 3;
}
// System.out.println(binary.toString());
List<Integer> res = new ArrayList<>();
int j = 0;
for (int i = 0; i < binary.size(); i++) {
if (binary.get(i) != 0) {
while (j < binary.get(i)) {
res.add((int) Math.pow(3, i));
j++;
}
j =0;
}
}
return res.stream().mapToInt(i -> i).toArray();
}
这个问题的答案总是以 3 为底的表示,也称为三元。
我最大的建议是不需要你的binary
数据结构。 当您找到余数时,就在那里,然后您可以查看余数是否存在,并将适当的 3 次幂添加到您的答案中。
class Solution: # @param A : integer # @return 一个整数列表 def solve(self, A): bits = [] solution = []
while(A != 0):
bits.append(A % 3);
A = A // 3;
for i in range(len(bits)):
if(bits[i] != 0):
tmp = 0;
while(tmp < bits[i]):
solution.append(pow(3, i));
tmp = tmp + 1
return solution
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.