摘要:由于無法處理相同的操作,所依對于的時候,我采用了進行操作。為時,對于每一次遍歷,找到這個值是否已經存在在里,同時獲取這個值出現過的次數。
題目詳情
Given an array of integers and an integer k, you need to find the number of unique k-diff pairs in the array. Here a k-diff pair is defined as an integer pair (i, j), where i and j are both numbers in the array and their absolute difference is k.想法這道題的意思是,輸入一個整數數組和一個整數k,我們需要找出數組中絕對值差正好為k的不重復的整數對兒
Example 1:
Input: [3, 1, 4, 1, 5], k = 2
Output: 2
這個例子中有兩個不同的整數對, (1, 3)和(3, 5).Example 2:
Input:[1, 2, 3, 4, 5], k = 1
Output: 4
這個例子里有四個不同的整數對(1, 2), (2, 3), (3, 4)和(4, 5).Example 3:
Input: [1, 3, 1, 5, 4], k = 0
Output: 1
這個例子里有一個符合要求的整數對(1,1)
這道題我分兩種情況進行的討論,一種是k不為0的時候,我通過新建一個hashset來完成計算。
由于hashset無法處理相同key的操作,所依對于k==0的時候,我采用了hashmap進行操作。
k為0時,對于每一次遍歷,找到這個值是否已經存在在hashmap里,同時獲取這個值出現過的次數(value)。如果次數為1,那么我們獲得了一個符合要求的整數對,如果次數大于1,那么說明這個整數對已經被統計過了,可以忽略。如果這個鍵值未曾出現在hashmap里,那么我們將其存入hashmap,將value賦值為1.
當k不為0時,我們遍歷每一個元素,如果這個元素和當前set中的元素不重復的話,我們將這個元素存入set,然后判斷在set中是否有滿足和這個元素的絕對值相差為k的整數出現,如果有,構成一個整數對。
解法int res = 0; if(k < 0)return 0; if(k == 0){ HashMapcountZero = new HashMap (); for(int i=0;i count = new HashSet (); for(int num : nums){ if(!count.add(num)){continue;} if(count.contains(num+k)){ res ++; } if(count.contains(num-k)){ res ++; } } } return res;
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68382.html
Problem Given an array of integers and an integer k, you need to find the number of unique k-diff pairs in the array. Here a k-diff pair is defined as an integer pair (i, j), where i and j are both nu...
摘要:前言從開始寫相關的博客到現在也蠻多篇了。而且當時也沒有按順序寫現在翻起來覺得蠻亂的。可能大家看著也非常不方便。所以在這里做個索引嘻嘻。順序整理更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新 前言 從開始寫leetcode相關的博客到現在也蠻多篇了。而且當時也沒有按順序寫~現在翻起來覺得蠻亂的。可能大家看著也非常不方便。所以在這里做個索引嘻嘻。 順序整理 1~50 1...
摘要:在線網站地址我的微信公眾號完整題目列表從年月日起,每天更新一題,順序從易到難,目前已更新個題。這是項目地址歡迎一起交流學習。 這篇文章記錄我練習的 LeetCode 題目,語言 JavaScript。 在線網站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公眾號: showImg(htt...
摘要:如果為空的情況下,也為空返回,不為空返回為空,返回數組第一個元素返回包含數組前個元素的數組返回數組中除了最后一個元素外的其他全部元素。 // Array Functions // --------------- // Get the first element of an array. Passing **n** will return the first N ...
摘要:給定長度為的數組你的任務是將這些數分成對例如,使得從到的總和最大。提示是正整數范圍在數組中的元素范圍在解題思路其實就是把數組排序,然后按順序每兩個數既是一對,每對的第一個數累加之和即為所求。就是考一下各類排序算法的性能。 文章全部來自公眾號:愛寫bug 算法是一個程序的靈魂。Given an array of 2n integers, your task is to group the...
閱讀 1207·2019-08-30 15:55
閱讀 954·2019-08-30 15:55
閱讀 2150·2019-08-30 15:44
閱讀 2879·2019-08-29 14:17
閱讀 1130·2019-08-29 12:45
閱讀 3301·2019-08-26 10:48
閱讀 3133·2019-08-23 18:18
閱讀 2599·2019-08-23 16:47