Skip to content

Commit dde5e03

Browse files
authored
Merge pull request #1710 from mumunuu/main
2 parents 0e9cde7 + 6ca06af commit dde5e03

File tree

3 files changed

+115
-0
lines changed

3 files changed

+115
-0
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import java.util.HashSet;
2+
import java.util.Set;
3+
4+
5+
class Solution {
6+
7+
/**
8+
*
9+
* Set ํŒ๋‹จ์œผ๋กœ O(n)
10+
*
11+
* */
12+
public boolean containsDuplicate(int[] nums) {
13+
14+
Set<Integer> set = new HashSet<>();
15+
16+
for (int num : nums) {
17+
18+
boolean isAdded = set.add(num);
19+
20+
if (!isAdded) {
21+
return true;
22+
}
23+
}
24+
25+
return false;
26+
27+
}
28+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import java.util.ArrayList;
2+
import java.util.HashMap;
3+
import java.util.List;
4+
import java.util.Map;
5+
6+
class Solution {
7+
8+
9+
// priority queue ๋กœ ํ’€์–ด๋ณด๊ธฐ
10+
public int[] topKFrequent(int[] nums, int k) {
11+
12+
// ๋นˆ๋„์ˆ˜๋ฅผ ์…ˆ
13+
Map<Integer, Integer> freqMap = new HashMap<>();
14+
for (int num : nums) {
15+
freqMap.put(num, freqMap.getOrDefault(num, 0) + 1);
16+
}
17+
18+
// ๊ฐฏ์ˆ˜๋งŒํผ ๋ฐฐ์—ด ์ƒ์„ฑ (๋นˆ๋„์ˆ˜๋ฅผ ์ธ๋ฑ์Šค๋กœ ๊ฐ€์ง€๋Š”)
19+
List<Integer>[] bucket = new List[nums.length + 1]; // freq๋Š” ์ตœ๋Œ€ nums.length
20+
for (int i = 0; i < bucket.length; i++) {
21+
bucket[i] = new ArrayList<>();
22+
}
23+
24+
for (Map.Entry<Integer, Integer> entry : freqMap.entrySet()) {
25+
int num = entry.getKey();
26+
int freq = entry.getValue();
27+
bucket[freq].add(num);
28+
}
29+
30+
// ๋นˆ๋„์ˆ˜๊ฐ€ ๋†’์€ ๋’ค์—์„œ๋ถ€ํ„ฐ ๋„ฃ์–ด์คŒ
31+
List<Integer> result = new ArrayList<>();
32+
for (int i = bucket.length - 1; i >= 0 && result.size() < k; i--) {
33+
if (!bucket[i].isEmpty()) {
34+
result.addAll(bucket[i]);
35+
}
36+
}
37+
38+
// k๊ฐœ๋งŒ ๋ฐ˜ํ™˜
39+
return result.subList(0, k).stream().mapToInt(i -> i).toArray();
40+
}
41+
}

โ€Žtwo-sum/mumunuu.javaโ€Ž

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import java.util.HashMap;
2+
import java.util.Map;
3+
4+
class Solution {
5+
/**
6+
* ๋ฐฐ์—ด์˜ ์š”์†Œ 2๊ฐœ๋ฅผ ๋”ํ•ด์„œ target ์ˆซ์ž๋“ค์„ ๋งŒ๋“ค๊ณ  ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜
7+
* ๊ฐ™์€ ์ˆซ์ž๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ณ , ํ•ด๋‹ต์€ ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•จ
8+
* Follow-up: Can you come up with an algorithm that is less than O(n^2) time complexity?
9+
*/
10+
11+
/*
12+
// naive ํ•œ ํ’€์ด๋ฒ•. O(n^2)
13+
public int[] twoSum(int[] nums, int target) {
14+
// naive ํ•œ ๋ฐฉ๋ฒ•: ๋‚˜๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ์ˆซ์ž๊ฐ€ ์žˆ๋Š”์ง€ ์ฐพ์Œ
15+
for (int i=0; i<nums.length-1; i++) {
16+
for (int k=i+1; k<nums.length; k++) {
17+
if (nums[i] + nums[k] == target) {
18+
return new int[]{i,k};
19+
}
20+
}
21+
}
22+
return new int[]{};
23+
}
24+
*/
25+
26+
27+
// ์ฒ˜์Œ์— Map<Integer, List<Integer>>๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ๊ทธ๋ƒฅ Integer, Integer๋กœ ๊ฐ€๋Šฅํ•จ
28+
public int[] twoSum(int[] nums, int target) {
29+
30+
Map<Integer, Integer> map = new HashMap<>();
31+
32+
for (int i = 0; i < nums.length; i++) {
33+
34+
int needValue = target - nums[i];
35+
if (map.containsKey(needValue)) {
36+
return new int[]{map.get(needValue), i};
37+
}
38+
map.put(nums[i], i); // ํ•ญ์ƒ ํ˜„์žฌ ์ธ๋ฑ์Šค๋ฅผ ๋‚˜์ค‘์— ์ €์žฅ
39+
40+
}
41+
42+
return new int[]{}; // ์ ˆ๋Œ€ ๋„๋‹ฌํ•˜์ง€ ์•Š์Œ (๋ฌธ์ œ ์กฐ๊ฑด์ƒ ์ •๋‹ต์ด ํ•ญ์ƒ ์กด์žฌ)
43+
44+
}
45+
46+
}

0 commit comments

Comments
ย (0)