Google – All Numbers from Prime List
给一个包含distinct prime numbers 的数组,求所有能用这些prime numbers组成的数。
Follow up: 如果数组不是distinct, 有重复怎么办。
[Solution]
类似于subset i & ii, 每个subset的乘积,就是一个能组成的数。
Read full article from Google – All Numbers from Prime List
给一个包含distinct prime numbers 的数组,求所有能用这些prime numbers组成的数。
Follow up: 如果数组不是distinct, 有重复怎么办。
[Solution]
类似于subset i & ii, 每个subset的乘积,就是一个能组成的数。
public List<Integer> fromPrimeNumber(int[] primes) { List<Integer> result = new ArrayList<>(); Arrays.sort(primes); backtracking(primes, 0, result, 1, new HashSet<>()); return result; } private void backtracking(int[] primes, int pos, List<Integer> result, int curr, Set<Integer> set) { result.add(curr); if (pos == primes.length) { return; } int i = pos; while (i < primes.length) { curr *= primes[i]; backtracking(primes, i + 1, result, curr, set); curr /= primes[i]; while (i + 1 < primes.length && primes[i] == primes[i + 1]) { i++; } i++; } }