两数之和

146 阅读1分钟

Java

暴利解法

class Solution {
    public int[] twoSum(int[] nums, int target) {
        int n = nums.length;
        for (int i = 0; i < n; ++i) {
            for (int j = i + 1; j <n; ++j) {
                if(nums[i] + nums[j] == target) {
                    return new int[]{i, j};
                }
            }
        }
        return new int[0];
    }
}

哈希表

class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> hashtable = new HashMap<Integer, Integer>();
        for(int i = 0; i < nums.length; i++) {
            if(hashtable.containsKey(target - nums[i])) {
                return new int[]{target - nums[i], i};
            }
            hashtable.put(nums[i], i);
        }
        return new int[0];
    }
}

Golang

暴利解法

func twoSum(nums []int, target int) []int {
    for i, x := nums {
        for j := i + 1; j < len(nums); j++ {
            if x + nums[j] == target {
                return []int{i, j}
            }
        }
    }
    return nil
}

哈希表

func twoSum(nums []int, target int) []int {
    hashTable := map[int]int{}
    for i, x := range nums {
        if h, err := hashTable[target - x]; err {
            return []int{h, i}
        }
        hashTable[x] = i
    }
    return nil
}

JavaScript

暴利解法

function twoSum(nums: number[], target: number): number[] {
    for(let i = 0; i < nums.length; i++) {
        for (let j = i + 1; j < nums.length; j++) {
            if (nums[i] + nums[j] === target) {
                return [i, j];
            }
        }
    }
    return [];
};

Object

function twoSum(nums: number[], target: number): number[] {
    const hashTable: { [key: number]: number } = {};
    for (let i = 0; i < nums.length; i++) {
        if(hashTable.hasOwnProperty(target - nums[i])) {
            return [hashTable[target - nums[i]], i]
        }
        hashTable[nums[i]] = i;
    }
    return [];
};