国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

一道使用算法解決的java題(關于hashmap的問題)

瀏覽:124日期:2023-11-16 18:17:12

問題描述

leetcode的第一題,這種方法可以實現O(n)復雜度解

題目要求是給一個int[],例如 nums = [2, 7, 11, 15],給一個target = 9。若存在兩個數的和為target值,例如 nums[0] + nums[1] = 2 + 7 = 9return [0, 1].

使用如下解法的時候,有一點疑惑,就是new了一個hashmap,但是并沒有給他賦值,這種情況下是如何實現題目要求的呢?

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;}

問題解答

回答1:

for循環里面的map.put()不是賦值嗎???

回答2:

題目是要求得兩個數的和為目標值為給定值,那么一定要遍歷至少兩個數.(1)如果先初始化,花費算法時間O(n);然后再遍歷查找到第一正確的值時,需要算法時間O(k), 0<k<n.總時間是O(n+k), 要判斷是不是自己,如(10 = 5 + 5).這種情況實現是:

1)先初始化map,   2)遍歷第一個數2, target - 2 = 9 - 2 = 7  3)判斷7也在map中,返回正確結果.  注意:要遍歷到第一個正確數

  (2)如果不縣初始化,那么一定會遍歷到第二個正確的數,才停止,算法時間為O(k)(1<k<=n).不用判斷自己.  這種情況實現是:

 1)遍歷第一個數2, target - 2 = 9 - 2 = 7 2)判斷7是否在map,發現不在,把2加入map,繼續遍歷 3)直到遍歷到7, target - 7 = 9 - 7 = 2 4)判斷2在map,返回正確結果 注意,要遍歷到第二個正確數.回答3:

沒有 Key 的情況下,HashMap.containsKey(Key) 返回的是 false 不包括 Key。

public boolean containsKey(Object key) {return getNode(hash(key), key) != null; }

不會出現你所想的空指針錯誤。

標簽: java
相關文章:
主站蜘蛛池模板: 成人综合在线视频免费观看 | 目韩一区二区三区系列片丶 | 点击进入不卡毛片免费观看 | 亚洲aⅴ在线 | 欧美人交性视频在线香蕉 | 国产一区二区影院 | 99re8免费视频精品全部 | 国产精品外围在线观看 | 国产欧美另类久久久精品免费 | 精品视频网 | 久久久毛片免费全部播放 | 一级毛毛片毛片毛片毛片在线看 | 日本三级中文字幕 | 亲子乱子伦xxxx | 日韩美女一区 | 欧美xxxx性xxxxx高清视频 | 日韩v在线 | 狠狠久久综合 | 91色视 | 久久黄色影院 | 国产一级做a爰片久久毛片男 | 日韩毛毛片 | 亚洲欧美日本综合一区二区三区 | 日韩欧美毛片免费观看视频 | 久久久久国产精品免费免费 | 日本三级欧美三级人妇英文 | 国产精品伦理久久久久 | 欧美激情综合亚洲五月蜜桃 | 久久久精品免费热线观看 | 亚洲图片视频在线观看 | 国产欧美久久久精品 | 加勒比毛片 | 日韩在线精品 | 国产呦系列 | 精品久久网站 | 男人的天堂欧美 | 大伊香蕉精品视频在线 | 欧美一区二区三区在线观看免费 | 精品一区二区三区在线成人 | 欧美精品做人一级爱免费 | 美女黄页网站免费进入 |