Find given numbers of elements from an unsorted array whose sum equals a given number.
I have write the below code, it's almost work. but the complexity is O(n^2). Is there a better solution?
(function test(sum = 14, n = 4, nums = [7, 6, 1, 3, 2, 5, 4]) {
for (var i = 0; i < nums.length; i++) {
var rest = sum
var ret = []
var j = i;
do {
if (rest - nums[j] >= 0) {
rest = rest - nums[j]
} else {
j++
continue
}
ret.push(nums[j])
if (rest == 0 && ret.length == n) {
console.log("done", ret)
}
j++
} while (j < nums.length)
}
})()