Próbuję przygotować się do kodowania wywiadów za pomocą LeetCode. W pierwszym problemie muszę zwrócić indeks liczb, których suma jest równa danym celu. Mój wynik spełnia 13 testów z 19. Problem nie powiedzie się

Input:
[3,3]. target=6
Output:
undefined
Expected:
[0,1]

Czy ktoś może dać mi wskazówkę, gdzie jestem zawodzą?

Moje rozwiązanie:

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
    for (var i=0; i< nums.length; i++)
    {
        for (var j=1; j< (nums.length-1); j++)
        {
            if ((nums[i]+nums[j]) == target)
                {
                    var arr = [nums.indexOf(nums[i]), nums.indexOf(nums[j])];
                    arr.sort();
                    return arr;
                }
        }
    }
};
1
user379888 24 czerwiec 2017, 01:59

3 odpowiedzi

Najlepsza odpowiedź

Gdy długość twojej tablicy jest dwa, twój innerloop jest: j=1; j < 1; j++

Kod nigdy nie wchodzi i dlatego nic nie jest zwracane.

Po prostu zmień kolejność pętli:

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var twoSum = function(nums, target) {
    for (var i=0; i< nums.length - 1; i++)
    {
        for (var j= i + 1; j < (nums.length); j++)
        {
            if ((nums[i]+nums[j]) == target)
                {
                    return [i,j];
                }
        }
    }
};
console.log(twoSum([3,3], 6));
2
Jedi 23 czerwiec 2017, 23:22
    /**
     * @param {number[]} nums
     * @param {number} target
     * @return {number[]}
     */
            var twoSum = function(nums, target) {
            var dic = new dDictionary<int, int>();
            for (var i=0; i<nums.length - 1; i++)
                {
                    var remind = target - nums[i];
                    if(dic.containt[remind])
                        {
                            return [i, dic.containt[remind]];
                        }
                        else{
                            dic.add(remind, i);
                        }
                };
            console.log(twoSum([3, 3], 6));
0
David 7 kwiecień 2019, 07:43

Nie mam czasu na przetestowanie, ale widziałem twój kod i myślę, że zasięg pętli może być zły dla (var i = 0; i

0
james kim 23 czerwiec 2017, 23:12