leetCode 1两数之和

90 阅读1分钟

题目链接

用时间复杂度O(n)算法解(类似HashMap):

function twoSum(nums: number[], target: number): number[] {
    const arr = [];
    const result = [];
    nums.forEach((item, index) => {
        // 用值当index来缓存,这样读取效率就是O(1)
        arr[item] = index;
    })
    nums.forEach((item, index) => {
        const i = arr[target - item];
        if(i !== undefined && i !== index) {
            result.push(index, i);
            arr[target - item] = undefined;
            arr[item] = undefined;
        }
    })
    return result;
};