java題解LeetCode454.四數(shù)相加示例
正文
給你四個整數(shù)數(shù)組 nums1、nums2、nums3 和 nums4 ,數(shù)組長度都是 n ,請你計(jì)算有多少個元組 (i, j, k, l) 能滿足:
0 <= i, j, k, l < n
nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0
解決問題
將n的四次方轉(zhuǎn)變?yōu)閚的平方,主要通過按兩個兩個分組打包實(shí)現(xiàn),此外注意map中記錄的是前兩個數(shù)組中的內(nèi)容兩兩相加的值的出現(xiàn)次數(shù),這樣做是為了在后面兩個數(shù)組中尋找時,對于每個匹配的組合,都在總的次數(shù)中加上對應(yīng)值出現(xiàn)次數(shù),這樣做是因?yàn)樵擃}不去重,每個元組都是獨(dú)特的,所以都要算上
public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) { int n=nums1.length; int count=0; Map<Integer,Integer> map=new HashMap<>(); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if(map.containsKey(nums1[i]+nums2[j])){ int temp=map.get(nums1[i]+nums2[j])+1; map.put(nums1[i]+nums2[j],temp); } else{ map.put(nums1[i]+nums2[j],1); } } } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { int temp=-(nums4[j]+nums3[i]); if(map.containsKey(temp)){ count=count+map.get(temp); } } } return count; }
以上就是java題解LeetCode454.四數(shù)相加示例的詳細(xì)內(nèi)容,更多關(guān)于java LeetCode四數(shù)相加的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java設(shè)計(jì)模式學(xué)習(xí)之策略模式
這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)模式學(xué)習(xí)之策略模式的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10WeakHashMap?和?HashMap?區(qū)別及使用場景
這篇文章主要為大家介紹了WeakHashMap?和?HashMap?的區(qū)別是什么以及何時使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11詳談springboot過濾器和攔截器的實(shí)現(xiàn)及區(qū)別
今天小編就為大家分享一篇詳談springboot過濾器和攔截器的實(shí)現(xiàn)及區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08利用MultipartFile實(shí)現(xiàn)文件上傳功能
這篇文章主要為大家詳細(xì)介紹了利用MultipartFile實(shí)現(xiàn)文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-11-11