Find a pair of elements from an array whose sum equals a given number

后端 未结 30 1522
暗喜
暗喜 2020-11-22 10:14

Given array of n integers and given a number X, find all the unique pairs of elements (a,b), whose summation is equal to X.

The following is my solution, it is O(nLo

30条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-11-22 10:41

    Javascript solution:

    var sample_input = [0, 1, 100, 99, 0, 10, 90, 30, 55, 33, 55, 75, 50, 51, 49, 50, 51, 49, 51];
    var result = getNumbersOf(100, sample_input, true, []);
    
    function getNumbersOf(targetNum, numbers, unique, res) {
        var number = numbers.shift();
    
        if (!numbers.length) {
            return res;
        }
    
        for (var i = 0; i < numbers.length; i++) {
            if ((number + numbers[i]) === targetNum) {
                var result = [number, numbers[i]];
                if (unique) {
                  if (JSON.stringify(res).indexOf(JSON.stringify(result)) < 0) {
                    res.push(result);                
                  }
                } else {
                  res.push(result);
                }
                numbers.splice(numbers.indexOf(numbers[i]), 1);
                break;
            }
        }
        return getNumbersOf(targetNum, numbers, unique, res);
    }
    

提交回复
热议问题