1. 两数之和(Java)
生活随笔
收集整理的這篇文章主要介紹了
1. 两数之和(Java)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定一個整數數組 nums 和一個整數目標值 target,請你在該數組中找出 和為目標值 target 的那 兩個 整數,并返回它們的數組下標。你可以假設每種輸入只會對應一個答案。但是,數組中同一個元素在答案里不能重復出現。你可以按任意順序返回答案。
首先該題要求時間復雜度低于O(n^2),可以采用空間換時間的方法采用哈希表的方式。
key為target與num[]中值之差,value為num[]中值的下標。檢查哈希表中是否存在target與當前值之差:如果存在則返回該結果,如果不存在則將其存入哈希表中。
使用哈希表的方法很簡單易懂,需要注意的就是哈希沖突的問題,上述方法可以有效避開hash沖突。每次寫入時,判斷條件不是當前的key本身存不存在,而是key和tag之間的差值存不存在,這一點很重要。假定只有一個解,也就是說重復元素再多都無所謂。如果有3個或者以上的重復元素,代表這個重復元素不可能是解,所以寫入map的時候直接覆蓋也無所謂;如果只有兩個重復元素,同樣的道理,假如這個重復元素是解,那么必定是兩個重復元素的和等于tag。這種情況下,當遇到第二個重復元素時,不會寫入map,這個時候直接已經取到解了。 所以這種方式,不用考慮hash沖突的問題。
總結
以上是生活随笔為你收集整理的1. 两数之和(Java)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: idea的pom变成橙色的xml文件
- 下一篇: 修改date格式 java_如何用Jav