2020/10/31·Leetcode·兩數之和

m0_45304160發表於2020-10-31

普通雙層 for 迴圈解法

時間複雜度:O(N 2 )
空間複雜度:O(1)
耗時:70ms

class Solution {
	//每一個都跟它後面的陣列合,是否等於target
    public int[] twoSum(int[] nums, int target) {
        int[] result = new int[2];
        for (int i = 0; i < nums.length - 1; i++) {
            for (int j = i + 1; j < nums.length; j++) {
                if (nums[i] + nums[j] == target) {
                    result[0] = i;
                    result[1] = j;
                }
            }
        }
        return result;
    }
}

雜湊解法(推薦)

時間複雜度:O(N)
空間複雜度:O(N)
耗時:2ms

class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer,Integer> map = new HashMap<>();
        for (int i = 0;i<nums.length;i++){
        	//求出另一個值的大小
            int get = target - nums[i];
            //如果map中包含這個值:get
            if (map.containsKey(get)){
            	//則直接返回兩個下標
                return new int[]{map.get(get),i};
            }
            //否則key-value加入到map中
            map.put(nums[i],i);
        }
        return null;
    }
}

一天一哲理

用眼看世界,難免一葉障眼

相關文章