【LittleDuck_LeetCodeNote】01 - Two Sum

更新於 2023/07/03閱讀時間約 7 分鐘

A realistic, brightly colored interior home-style drawing in blue tones of a software engineer. - Leonardo.ai

Question and Hints

Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.
You can return the answer in any order.
Example 1:
Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].
Example 2:
Input: nums = [3,2,4], target = 6
Output: [1,2]
Example 3:
Input: nums = [3,3], target = 6
Output: [0,1]
Constraints:
  • 2 <= nums.length <= 104
  • 109 <= nums[i] <= 109
  • 109 <= target <= 109
  • Only one valid answer exists.
Follow-up:
Can you come up with an algorithm that is less than O(n^2) time complexity?

First Solution

💡 設計一個ans作為output,用兩個迴圈以排列組合的方式捉對比較,符合的就放進ans,排序後進行return。
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] ans = 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){
ans[0] = i;
ans[1] = j;
Arrays.sort(ans);
}
}
}
return ans;
}
}
⏰ Runtime: 14 ms (54.26%)
📦 Memory: 39.6 MB (100%)

Upgrade Solution

use Hash Table.
💡 建立一個HashMap,result用於存放index,用一個for loop同時將nums的值放進HashTable並逐一檢查,當有找到或是全部沒找到,就回傳result.
1. 每圈for loop先設定一個findValue,內容為target — nums值
2. 第一圈,nums = 2, findValue = 9–2=7, containsKey(findValue) = false, map.put(0,2);
3. 第二圈,nums = 7, findValue = 9–7=2, containsKey(findValue) = true, result[1] = 1, result[0] = map.get(2), result = [0, 1]
return#
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer,Integer> map = new HashMap<>();
int[] result = new int[2];

for(int i = 0; i < nums.length; i++){
int findValue = target - nums[i];
if(map.containsKey(findValue)){
result[1]=i;
result[0]=map.get(findValue);
return result;
}
map.put(nums[i],i);
}
return result;
}
}

💡 為什麼要用HashMap?

原先使用迴圈+陣列,在尋找裡面任何一個值時,第二個迴圈(j)都要從陣列的頭(index=0)開始尋找,萬一運氣不好都找不到正確的組合,就要移動第一個迴圈(i)再重跑一次。光是找其中一個值,花費的時間就有高機率到O(n);這表示多數情況下,要找到正確的組合,時間複雜度必定會到O(nlogn),最糟情況甚至會讓i和j都跑到底,來到O(n^2)的範圍。
HashMap的原理簡單來說,是用一個鍵值(key)對應一個被儲存的值(Value),要尋找裡面任何一個值時,可以直接從對應的key值得到Value,其時間複雜度為O(1);就算是Worst Case,也能在O(n)的範圍內找到正確的組合。
⏰ Runtime: 1ms (99.28%)
📦 Memory: 42.9 MB (39.20%)

📕 補充:Java常用的HashMap操作:

添加 -> HashMap.put(key, value)
取值 -> HashMap.get(value)
刪除 -> HashMap.remove(value)
檢查索引是否成立 -> HashMap.containsKey(value)
此篇文章會顯示動態置底廣告
為什麼會看到廣告
avatar-img
6會員
36內容數
以英文和日文歌的翻譯為主,並從「歌曲裡的故事」這個角度去翻譯。畢竟自己只有中文算好而已 :D
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Steven SHIH的沙龍 的其他內容
這是我第一次做歌詞翻譯,老實說我不太會評論歌曲,不過我的感受是,這首歌給我一種鄉村民謠的感覺,用棒球與聖經,帶出了夢想、追逐過程中的磨難,以及用虔誠的心去接納這些困境,轉變為自己成長的正向意義,將男孩與男人之間的成長與傳承,描繪得相當生動。
這是我第一次做歌詞翻譯,老實說我不太會評論歌曲,不過我的感受是,這首歌給我一種鄉村民謠的感覺,用棒球與聖經,帶出了夢想、追逐過程中的磨難,以及用虔誠的心去接納這些困境,轉變為自己成長的正向意義,將男孩與男人之間的成長與傳承,描繪得相當生動。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
雙琴俠2024世界巡迴音樂會:古典音樂界最受歡迎的組合雙琴俠,來台巡演!僅此一晚,加入Brett、Eddy 和Sophie,體驗一場充滿他們獨特音樂才華與機智幽默的難忘音樂會!音樂語言、天賦、努力與愛~音樂會看人生。
Thumbnail
Take-Two Interactive Software(NASDAQ: TTWO)在 2022 年轉折,股價上漲了 60%。儘管成長前景依然存在,但第四季度的業績和 2025 年的指引讓市場重新調整。問題在於《俠盜獵車手 VI》這款旗艦遊戲的發佈時間推遲至 2026 財年初
Thumbnail
書名: Between Two Kingdoms: A Memoir of a Life Interrupted 作者: Suleika Jaouad 出版社: Random House 出版日期: 2021/02/09 這是一本抗癌與自我找尋、自我治療的書。蘇萊卡在剛畢業準備開始展開自己
Thumbnail
在古時候,艾利的祖先是十字軍的大將,非常的勇敢,每次都打敗敵人。國王很喜歡他,戰後光榮地回家時,就封他為爵士,而且還有很大的領地。 整片領地就叫黑森林,還有一座古堡叫忘憂堡,是他們的住宅,古堡很大有幾十個房間和廣大的狩獵場地,供他們騎馬和打獵。
Thumbnail
昨天下載了一個手機小遊戲"Two Dots” 是一款益智遊戲,它的概念很簡單,兩點一線就能消去。因為遊戲簡單有趣,容易上手,令人著迷,一下就衝到97關。它的遊戲介面簡潔,顏色柔和,玩法簡單但是組合多變。最重要的是"遊戲中間沒有廣告",廣告只有在玩家想得到輔助道具,或是延續生命時,才需要看廣告
Thumbnail
因為聞到我妹的咖啡東坡肉屁味,我忘記標題的吉祥話。🤔2023年的1月21日發現,原來大腸桿菌還有黃金葡萄球菌?會隨著惡臭竄進鼻腔往上腐蝕腦細胞。 今年年菜我那勤快有創意的母親又變出這幸福的料理。 其實照片看來我也說不出什麼創意,因為我不擅長拍照,我最擅長的是把林志玲拍成小甜甜、黃西田拍成黃曉明。
Thumbnail
Gravel(瓜佛)約莫是在2018年開始先於北美區域萌芽,到2022的現在,Gravel車種也在相對保守的歐洲市場獲得騎士們的喜愛。 Gravel最初是由一些先驅品牌(例如3T)開始在這個小眾市場獲得成功。 然後,國際大品牌也紛紛加入這個戰場。 到現在,幾乎是沒有一個品牌不作Gravel車種的。
Thumbnail
音箱模擬的市場競爭越來越激烈,如今箱體模擬的龍頭Two Notes也加入戰局,推出兩款全新的音箱模擬ReVolt Guitar和ReVolt Bass。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
雙琴俠2024世界巡迴音樂會:古典音樂界最受歡迎的組合雙琴俠,來台巡演!僅此一晚,加入Brett、Eddy 和Sophie,體驗一場充滿他們獨特音樂才華與機智幽默的難忘音樂會!音樂語言、天賦、努力與愛~音樂會看人生。
Thumbnail
Take-Two Interactive Software(NASDAQ: TTWO)在 2022 年轉折,股價上漲了 60%。儘管成長前景依然存在,但第四季度的業績和 2025 年的指引讓市場重新調整。問題在於《俠盜獵車手 VI》這款旗艦遊戲的發佈時間推遲至 2026 財年初
Thumbnail
書名: Between Two Kingdoms: A Memoir of a Life Interrupted 作者: Suleika Jaouad 出版社: Random House 出版日期: 2021/02/09 這是一本抗癌與自我找尋、自我治療的書。蘇萊卡在剛畢業準備開始展開自己
Thumbnail
在古時候,艾利的祖先是十字軍的大將,非常的勇敢,每次都打敗敵人。國王很喜歡他,戰後光榮地回家時,就封他為爵士,而且還有很大的領地。 整片領地就叫黑森林,還有一座古堡叫忘憂堡,是他們的住宅,古堡很大有幾十個房間和廣大的狩獵場地,供他們騎馬和打獵。
Thumbnail
昨天下載了一個手機小遊戲"Two Dots” 是一款益智遊戲,它的概念很簡單,兩點一線就能消去。因為遊戲簡單有趣,容易上手,令人著迷,一下就衝到97關。它的遊戲介面簡潔,顏色柔和,玩法簡單但是組合多變。最重要的是"遊戲中間沒有廣告",廣告只有在玩家想得到輔助道具,或是延續生命時,才需要看廣告
Thumbnail
因為聞到我妹的咖啡東坡肉屁味,我忘記標題的吉祥話。🤔2023年的1月21日發現,原來大腸桿菌還有黃金葡萄球菌?會隨著惡臭竄進鼻腔往上腐蝕腦細胞。 今年年菜我那勤快有創意的母親又變出這幸福的料理。 其實照片看來我也說不出什麼創意,因為我不擅長拍照,我最擅長的是把林志玲拍成小甜甜、黃西田拍成黃曉明。
Thumbnail
Gravel(瓜佛)約莫是在2018年開始先於北美區域萌芽,到2022的現在,Gravel車種也在相對保守的歐洲市場獲得騎士們的喜愛。 Gravel最初是由一些先驅品牌(例如3T)開始在這個小眾市場獲得成功。 然後,國際大品牌也紛紛加入這個戰場。 到現在,幾乎是沒有一個品牌不作Gravel車種的。
Thumbnail
音箱模擬的市場競爭越來越激烈,如今箱體模擬的龍頭Two Notes也加入戰局,推出兩款全新的音箱模擬ReVolt Guitar和ReVolt Bass。