亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

about Two Sum of leetcode (HashMap)

2019-11-06 06:06:21
字體:
來源:轉載
供稿:網友

作個人記錄LeetCode解題過程中的一些啟發之用。

Two Sum

Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would have exactly one solution, and you may not use the same element twice.

給出一個int型數組,和一個目標(和)target,返回數組中和為target的兩int型數組元素的下標 實現上述功能。 Example:

Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].

這是一個很簡單的題目,很容易實現,不過算法的時間復雜度值得考究。 開始隨手寫的方法如下,java實現:

public class Solution { public int[] twoSum(int[] nums, int target) { int[] a = new int[2]; for(int i = 0; i < nums.length; i++){ for(int j = i+1; j<nums.length; j++){ if(nums[j] == target - nums[i]){ a[0]=i; a[1]=j; } } } return a; }}

上面的算法時間復雜度為O(n2),雖然accepted,顯然不理想

得票數第一的Java實現,時間復雜度為O(n):

public int[] twoSum(int[] numbers, int target) { int[] result = new int[2]; Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (int i = 0; i < numbers.length; i++) { if (map.containsKey(target - numbers[i])) { result[1] = i + 1; result[0] = map.get(target - numbers[i]); return result; } map.put(numbers[i], i + 1); } return result;}

這里用了HashMap數據結構,Java中HashMap的containsKey、get、put方法時間復雜度為O(1)(在HashMap中的存儲的entry對的Key的哈希不相等時,即不發生碰撞情況)

與上面第一種算法的兩層for循環相比,這種算法只需要遍歷nums[]數組一次,將其以(nums[] , index)鍵值對存進HashMap。并且是先移動下標i,再判斷containsKey(),再將其put進HashMap,再移動下標,在前面生成的HashMap中進行containsKey判斷。

Key:

這種在靠后點判斷之前點的方法與第一種暴力檢索的在靠前點遍歷之后點的思路是完全相反的,這也是由HashMap的通過hashcode()來search的性質決定的,對于nums[]規模較大時,HashMap的效率要遠優于兩層遍歷方法。

此外還有Python實現的版本

class Solution(object): def twoSum(self, nums, target): if len(nums) <= 1: return False buff_dict = {} for i in range(len(nums)): if nums[i] in buff_dict: return [buff_dict[nums[i]], i] else: buff_dict[target - nums[i]] = i

同樣時間復雜度為O(n),這里采用的是python里的dict字典數據結構。遍歷nums[],先判斷nums[i],再將target-nums[i]存進dict,直到在nums[]中遍歷到在dict中存儲過的元素。


總結

無論是Java還是Python實現,都是基于使用一種search時間復雜度低(O(1))的數據結構來存儲數組nums[],因為數組nums[]的search只能基于遍歷這種暴力方法,時間復雜度為O(n)。因此以后在涉及到search的問題時應當選擇時間復雜度更優的HashMap之類的數據結構。

about HashMap :

HashMap 是一個散列表,它存儲的內容是鍵值對(key-value)映射。HashMap 繼承于AbstractMap,實現了Map、Cloneable、java.io.Serializable接口。HashMap 的實現不是同步的,這意味著它不是線程安全的。它的key、value都可以為null。此外,HashMap中的映射不是有序的。HashMap 的實例有兩個參數影響其性能:“初始容量” 和 “加載因子”。容量 是哈希表中桶的數量,初始容量 只是哈希表在創建時的容量。加載因子 是哈希表在其容量自動增加之前可以達到多滿的一種尺度。當哈希表中的條目數超出了加載因子與當前容量的乘積時,則要對該哈希表進行 rehash 操作(即重建內部數據結構),從而哈希表將具有大約兩倍的桶數。 HashMap 's Methods


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色悠悠久久久久| 日韩在线观看免费| 国产成人高潮免费观看精品| 伦理中文字幕亚洲| 在线成人中文字幕| 亚洲精品www久久久久久广东| 日韩电影在线观看永久视频免费网站| 欧美精品在线第一页| 在线观看国产精品日韩av| 亚洲欧美国产日韩天堂区| 好吊成人免视频| 亚洲电影在线看| 97精品国产97久久久久久春色| 国产成人精品电影久久久| 久久人人爽人人爽人人片av高请| 欧美激情极品视频| 精品一区二区三区三区| 操日韩av在线电影| 日韩在线精品一区| 欧美性猛交xxxx黑人| 亚洲精品wwwww| 久久全国免费视频| 亚洲精品国产电影| 日韩在线www| 欧美一级在线亚洲天堂| 亚洲欧洲一区二区三区在线观看| 欧美激情二区三区| 日韩中文字幕在线| 国产精品久久久久久久美男| 日本精品久久电影| 精品女厕一区二区三区| 亚洲天堂av电影| 日韩电影免费观看中文字幕| 国产精品日本精品| 在线免费观看羞羞视频一区二区| 日韩欧美成人免费视频| 国产一区二区成人| 欧美日韩一区二区免费在线观看| 91精品国产91久久久久| 91亚洲精品在线| 精品香蕉在线观看视频一| 91情侣偷在线精品国产| 91精品国产一区| 国产欧美精品一区二区| 亚洲视频在线观看视频| 欧美在线视频免费播放| 亚洲成**性毛茸茸| 亚洲精品国产精品国自产在线| 亚洲男人天堂2023| 久久频这里精品99香蕉| 日本精品性网站在线观看| 色综合天天狠天天透天天伊人| 欧美乱大交xxxxx另类电影| 欧美国产日韩精品| 久久精品视频中文字幕| 国产精品久久久久久久久久免费| 欧美成人一区在线| 日韩中文字幕在线视频播放| 亚洲电影免费观看高清完整版在线观看| 亚洲国产精品人久久电影| 国产精品久久久久久久久借妻| 中文字幕欧美日韩在线| 国产伊人精品在线| 亚洲自拍偷拍在线| 日本久久久a级免费| 国产精品成人观看视频国产奇米| 亚洲图片欧美午夜| 欧美电影在线免费观看网站| 精品国产一区久久久| 亚洲乱码av中文一区二区| 91老司机精品视频| 少妇久久久久久| 北条麻妃一区二区在线观看| 亚洲国产成人av在线| 精品久久久一区| 91精品国产九九九久久久亚洲| 精品成人乱色一区二区| 欧美孕妇孕交黑巨大网站| 久久亚洲国产精品| 欧美精品www| 亚洲精品小视频在线观看| 久久亚洲国产成人| 欧美国产中文字幕| 91精品久久久久久久久中文字幕| 国产精品美女久久久久av超清| 欧美大片在线看| 亚洲区一区二区| 国模gogo一区二区大胆私拍| 国产男女猛烈无遮挡91| 亚洲人成网站在线播| 欧美成人午夜视频| 亚洲国产欧美一区| 日韩欧美在线免费| 精品成人国产在线观看男人呻吟| 在线日韩日本国产亚洲| 欧美日韩美女视频| 国产精品永久在线| 91久久精品在线| 欧美黑人狂野猛交老妇| 2019国产精品自在线拍国产不卡| 9.1国产丝袜在线观看| 亚洲精品suv精品一区二区| 国产综合在线观看视频| 亚洲成人网av| 国产一区二区三区18| 亚洲精品综合久久中文字幕| 欧美最顶级丰满的aⅴ艳星| 日韩www在线| 精品少妇一区二区30p| 国内揄拍国内精品| 欧美精品少妇videofree| 亚洲欧洲在线免费| 国产精品专区一| 尤物九九久久国产精品的分类| 亚洲人成电影网| 欧美亚洲成人免费| 国产精品亚洲激情| 在线观看日韩欧美| 欧美电影电视剧在线观看| 日韩电影大全免费观看2023年上| 亚洲伊人久久综合| 欧美国产在线视频| 欧美成人sm免费视频| 亚洲999一在线观看www| 91精品久久久久久久久久入口| 国产噜噜噜噜久久久久久久久| 红桃视频成人在线观看| 欧美乱妇40p| 欧美成人免费小视频| 国产精品wwwwww| 亚洲韩国青草视频| 久久中文字幕视频| 欧美性猛交xxxx偷拍洗澡| 26uuu亚洲国产精品| 国产国产精品人在线视| 日韩资源在线观看| 久久精品国产精品亚洲| 欧美人与物videos| 国产精品久久久久久久久久久久| 欧美午夜无遮挡| 日韩精品视频三区| 国产有码在线一区二区视频| 亚洲人成电影网站色| 国产一区二区三区免费视频| 欧美日韩中文字幕综合视频| 日韩精品中文字幕有码专区| 日韩在线欧美在线国产在线| 久久国产精品亚洲| 91成人在线播放| 亚洲区一区二区| 久久亚洲精品国产亚洲老地址| 国产精品久久久久久久7电影| 成人久久一区二区| 国产精品久久久久影院日本| 亚洲精品v欧美精品v日韩精品| 日韩国产精品一区| 国产精品美乳一区二区免费| 国产主播在线一区| 亚洲精品日韩av| 亚洲全黄一级网站| 中文字幕久精品免费视频| 久久精品成人欧美大片古装| 国产福利成人在线| 97在线视频一区|