1. 程式人生 > 實用技巧 >LeetCode1. 兩數之和

LeetCode1. 兩數之和

一、題目描述

二、解法

class Solution {
    public int[] twoSum(int[] nums, int target) {
        /**
         * 方法1:暴力列舉。
         *      時間複雜度O(n^2),空間複雜度O(1)
         */
        /*for (int i = 0; i < nums.length; i++) {
            for (int j = i+1; j < nums.length; j++) {
                if (nums[j] == target - nums[i]) {
                    return new int[]{i,j};
                }
            }
        }
        return new int[]{-1,-1};
*/ /** * 方法2:雜湊表 * 時間複雜度O(n),空間複雜度O(n) * 注意先判斷,再存入。否則出現 [3,2,4] 6 返回[0,0]的情況,即當前元素使用了兩次。 */ Map<Integer,Integer> map = new HashMap<>(); for (int i = 0; i < nums.length; i++) { if (map.containsKey(target - nums[i])) {
return new int[]{map.get(target-nums[i]), i}; } map.put(nums[i], i); } return new int[]{-1,-1}; } }