Skip to content

Commit 897a32d

Browse files
committed
Modified 2 solutions
1 parent 56cb3fd commit 897a32d

File tree

2 files changed

+46
-44
lines changed

2 files changed

+46
-44
lines changed

Easy/Search Insert Position.java

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,25 @@
11
class Solution {
22
public int searchInsert(int[] nums, int target) {
3-
int low = 0;
4-
int high = nums.length-1;
5-
6-
if (nums[low] >= target) {
7-
return 0;
8-
}
9-
10-
if (nums[high] < target) {
11-
return high + 1;
12-
}
3+
return binarySearch(nums, target);
4+
}
5+
6+
private int binarySearch(int[] nums, int target) {
7+
int left = 0;
8+
int right = nums.length - 1;
139

14-
while (low < high) {
15-
int mid = (low + high)/2;
16-
if (nums[mid] < target) {
17-
low = mid+1;
10+
while (left <= right) {
11+
int mid = (left + right) / 2;
12+
if (nums[mid] == target) {
13+
return mid;
14+
}
15+
else if (nums[mid] > target) {
16+
right = mid - 1;
1817
}
1918
else {
20-
high = mid;
19+
left = mid + 1;
2120
}
2221
}
2322

24-
return low;
23+
return left;
2524
}
2625
}

Medium/Friend Circles.java

Lines changed: 31 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,44 @@
11
class Solution {
22
public int findCircleNum(int[][] M) {
3-
Map<Integer, List<Integer>> map = new HashMap<>();
4-
for (int i=0; i<M.length; i++) {
5-
for (int j=0; j<M[i].length; j++) {
3+
Map<Integer, Set<Integer>> map = new HashMap<>();
4+
for (int i = 0; i < M.length; i++) {
5+
for (int j = 0; j < M.length; j++) {
66
if (M[i][j] == 1) {
7-
map.computeIfAbsent(i, k -> new ArrayList<>()).add(j);
8-
map.computeIfAbsent(j, k -> new ArrayList<>()).add(i);
7+
map.computeIfAbsent(i, k -> new HashSet<>()).add(j);
98
}
109
}
1110
}
12-
13-
Set<Integer> set = new HashSet<>();
11+
12+
return dfs(map, M.length);
13+
}
14+
15+
private int dfs(Map<Integer, Set<Integer>> map, int n) {
1416
int count = 0;
15-
Queue<Integer> queue = new LinkedList<>();
16-
17-
for (Map.Entry<Integer, List<Integer>> entry : map.entrySet()) {
18-
if (set.contains(entry.getKey())) {
19-
continue;
17+
Set<Integer> seen = new HashSet<>();
18+
19+
for (int i = 0; i < n; i++) {
20+
if (!seen.contains(i)) {
21+
dfsHelper(i, seen, map);
22+
count++;
2023
}
21-
22-
queue.add(entry.getKey());
23-
24-
while (!queue.isEmpty()) {
25-
int popped = queue.remove();
26-
set.add(popped);
27-
List<Integer> list = map.get(popped);
28-
29-
for (Integer integer : list) {
30-
if (!set.contains(integer)) {
31-
queue.add(integer);
32-
}
24+
}
25+
26+
return count;
27+
}
28+
29+
private void dfsHelper(int idx, Set<Integer> seen, Map<Integer, Set<Integer>> map) {
30+
Queue<Integer> queue = new LinkedList<>();
31+
queue.add(idx);
32+
33+
while (!queue.isEmpty()) {
34+
int removed = queue.remove();
35+
seen.add(removed);
36+
37+
for (int friend : map.getOrDefault(removed, new HashSet<>())) {
38+
if (!seen.contains(friend)) {
39+
queue.add(friend);
3340
}
3441
}
35-
36-
count++;
3742
}
38-
39-
return count;
4043
}
4144
}

0 commit comments

Comments
 (0)