LeetCode 第一題TwoSum題解

2021-10-22 22:44:29 字數 1378 閱讀 6089

1.暴力法求解:

思想:利用兩個for迴圈對數字進行遍歷,第乙個for迴圈迴圈位置到nums.length - 1,第二個for迴圈起始為i+1.

// 時間複雜度:o(n^2)

// 空間複雜度:o(1)

public

static

int[

]twosum

(int

nums,

int target);}

}}throw

newillegalargumentexception

("no two sum soulution!");

}

2.利用雜湊表求解:

思想:建立乙個雜湊表,對於每乙個x,我們首先查詢雜湊表中是否存在target - x,如果不存在將它放入雜湊表中,然後將x插入到雜湊表中,即可保證不會讓x和自己匹配。

//時間複雜度:o(n),其中 o(n) 是陣列中的元素數量。對於每乙個元素 x,我們可以 o(1)地尋找 target - x。

//空間複雜度:o(n),其中 o(n) 是陣列中的元素數量。主要為雜湊表的開銷。

public

static

int[

]twosum

(int

nums,

int target);}

//如果沒有則將這個數和它的下標放入雜湊表

hashmap.

put(nums[i]

, i);}

//程式不存在兩個數相加等於target的合則丟擲異常

throw

newillegalargumentexception

("no two sum soulution!");

}

總結:

這道題是letcode的第一題,也就是我們常說的夢開始的地方。但其實對於我這種可以說完全沒有基礎的人來說這還是比較困難地,沒有思路,不知道該怎麼寫下去,所以再刷leetcode的題之前一定要把基礎打牢,然後對資料結構的知識有一點的體系化了解。

在leetcode老湯有這樣乙個方法:

首先, 如果你碰到乙個演算法, 不知道最優解的話, 那麼你就先用最簡單、最暴力的解法

然後, 找到暴力解法的效能瓶頸, 不斷的優化, 優化的方法可能有好幾個, 你可以都分析下

最後, 選擇乙個最優的解法, 看看還能不能繼續優化, 在追求程式極致效能的過程中, 你的功力會慢慢提高的

但其實最主要的還是你得擁有一定的資料結構與演算法的知識體系。

所以好好加油,當不會什麼的時候就好好認真學,慢慢地取積累知識,持之以恆就會發生質變了。

leetcode簡單題第一題python3

題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1...

LeetCode第一題 曼哈頓距離

你現在手裡有乙份大小為 n x n 的 地圖 網格 grid,上面的每個 區域 單元格 都用 0 和 1 標記好了。其中 0 代表海洋,1 代表陸地,你知道距離陸地區域最遠的海洋區域是是哪乙個嗎?請返回該海洋區域到離它最近的陸地區域的距離。我們這裡說的距離是 曼哈頓距離 manhattan dist...

Leetcode 第一題 兩數之和

給定乙個整數陣列nums和乙個目標值target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所...