`

Facebook interview - Prime Number Combination Product

 
阅读更多

给一个质数数组,返回所有可能的product,顺序不管

比如给 [2,3,5] 返回 [2,3,5,6,10,15,30]

数组中的数如果有重复则需要去重,不允许用set。

比如给 [2,2,2] 返回 [2,4,8],顺序不用管。

 

public List<Integer> combinePrimeProduct(int[] primes) {
	Arrays.sort(primes);
	List<Integer> result = new ArrayList<Integer>();
	combinePrimes(result, primes, 1, 0);
	return result;
}

private void combinePrimes(List<Integer> result, int[] primes, int product, int start) {
	if(start > primes.length) return;
	if(product != 1) {
		result.add(product);
	}
	for(int i=start; i<primes.length; i++) {
		if(i>start && primes[i] == primes[i-1]) continue;
		combinePrimes(result, primes, primes[i]*product, i+1);
	}
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics