1. 程式人生 > >LeetCode1之兩數之和(Two Sum)

LeetCode1之兩數之和(Two Sum)

一、題目

二、兩種解題思路

①方法一:

1)介紹:Map輔助法

  方法解析:Map輔助法,從x=陣列的第一個數開始,進行y=target-x的計算,並且檢視y是否在Map中存在,若存在,則返回x的下標和y的下標,若不存在,則將數儲存到Map中,繼續迴圈以上操作,若到最後還沒有符合條件的,則丟擲異常。

   時間複雜度:O(n)

   空間複雜度:O(n)

2)核心程式碼:

   

    public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            int target1 = target - nums[i];
            if (map.containsKey(target1)) {
                return new int[]{map.get(target1), i};
            }
            map.put(nums[i], i);
        }
        throw new IllegalArgumentException("no two sum");
    }


①方法二:

 1)介紹:暴力法

  方法解析:兩次迴圈進行解決。

   時間複雜度:O(N^2)

   空間複雜度:O(1)

 2)核心程式碼:略(使用快排即可)

三、LeetCode成功截圖

四、感想

感覺自己還沒做到最好,希望大家有好方法指教下,加油,加油,再加油,堅持,堅持,再堅持。