[leetcode 여행] 배열. - 532. 배열 의 K - diff 수 맞습니다.
2033 단어 ④ 알고리즘------leetcode 여행
예시 1:
: [3, 1, 4, 1, 5], k = 2
: 2
: 2-diff , (1, 3) (3, 5)。
1, 。
예시 2:
:[1, 2, 3, 4, 5], k = 1
: 4
: 1-diff , (1, 2), (2, 3), (3, 4) (4, 5)。
예시 3:
: [1, 3, 1, 5, 4], k = 0
: 1
: 0-diff ,(1, 1)。
주의:
4. 567917. 수 대 (i, j) 와 수 대 (j, i) 같은 숫자 로 계산 된다
4. 567917. 배열 의 길 이 는 10, 000 을 초과 하지 않 는 다
4. 567917. 모든 입력 의 정수 범 위 는? [-1e7, 1e7]。
해답:
/**
* : map
* @param nums
* @param k
* @return
*/
public static int findPairs1(int[] nums, int k) {
if (nums == null || nums.length < 0 || k < 0)
return 0;
Map map = new HashMap<>();
for (int i : nums){
// map ,
map.put(i,map.getOrDefault(i,0) + 1);
}
int count = 0;
for (Map.Entry entry: map.entrySet()){
// k = 0 ,
if (k == 0){
if (entry.getValue() >= 2){
count++;
}
}else{
// map num1 - num2 = k
if (map.containsKey(entry.getKey() + k)){
count++;
}
}
}
return count;
}
/**
* : Set , ,
* @param nums
* @param k
* @return
*/
public static int findPairs2(int[] nums, int k) {
//
Set numbers = new HashSet<>();
// k-diff
Set diff = new HashSet<>();
for (int num : nums){
// :
if (numbers.contains(num + k))
diff.add(num);
if (numbers.contains(num - k))
diff.add(num);
numbers.add(num);
}
return diff.size();
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[leetcode 의 여행] 배열 - 888. 공평 한 사탕 교환앨 리 스 와 밥 은 서로 다른 크기 의 사탕 봉 을 가지 고 있다. A[i] 앨 리 스 가 가 진 제 i 덩어리의 크기, B[j] 밥 이 가 진 1 등 이 야. j 알사탕 크기. 그들 은 친구 이기 때문에 사...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.