File tree Expand file tree Collapse file tree 3 files changed +115
-0
lines changed Expand file tree Collapse file tree 3 files changed +115
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
You canโt perform that action at this time.
0 commit comments