LeetCode1之兩數之和(Two Sum)
阿新 • • 發佈:2018-11-04
一、題目
二、兩種解題思路
①方法一:
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成功截圖
四、感想
感覺自己還沒做到最好,希望大家有好方法指教下,加油,加油,再加油,堅持,堅持,再堅持。