Skip to content

Commit 3d84b7c

Browse files
author
[irina.popovikj]
committed
irina final -34.java commit
1 parent 0aee424 commit 3d84b7c

File tree

1 file changed

+33
-1
lines changed
  • src/main/java/com/fishercoder/solutions

1 file changed

+33
-1
lines changed

src/main/java/com/fishercoder/solutions/_34.java

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,21 @@
11
package com.fishercoder.solutions;
2+
import java.util.HashMap;
3+
import java.util.Map;
24

35
public class _34 {
6+
private static Map<String, Boolean> branchCoverage = new HashMap<>();
7+
8+
static {
9+
branchCoverage.put("flag1", false);
10+
branchCoverage.put("flag2", false);
11+
branchCoverage.put("flag3", false);
12+
branchCoverage.put("flag4", false);
13+
branchCoverage.put("flag5", false);
14+
branchCoverage.put("flag6", false);
15+
branchCoverage.put("flag7", false);
16+
branchCoverage.put("flag8", false);
17+
branchCoverage.put("flag9", false);
18+
}
419

520
public static class Solution1 {
621
public int[] searchRange(int[] nums, int target) {
@@ -54,38 +69,55 @@ public static class Solution2 {
5469
public int[] searchRange(int[] nums, int target) {
5570
int[] result = new int[]{-1, -1};
5671
if (nums == null || nums.length == 0) {
72+
branchCoverage.put("flag1", true);
5773
return result;
5874
}
5975
if (nums[0] > target) {
76+
branchCoverage.put("flag2", true);
6077
return result;
6178
}
6279
if (nums[nums.length - 1] < target) {
80+
branchCoverage.put("flag3", true);
6381
return result;
6482
}
6583
int left = 0;
6684
int right = nums.length - 1;
6785
while (left <= right) {
86+
branchCoverage.put("flag4", true);
6887
int mid = left + (right - left) / 2;
6988
if (nums[mid] == target) {
70-
while (mid - 1 >= 0 && nums[mid] == nums[mid - 1]) {
89+
branchCoverage.put("flag5", true);
90+
while (mid - 1 >= 0 && nums[mid - 1] == nums[mid]) {
91+
branchCoverage.put("flag6", true);
7192
mid--;
7293
}
7394
result[0] = mid;
7495
while (mid + 1 < nums.length && nums[mid] == nums[mid + 1]) {
96+
branchCoverage.put("flag7", true);
7597
mid++;
7698
}
7799
result[1] = mid;
100+
printCoverage();
78101
return result;
79102
} else if (nums[mid] > target) {
103+
branchCoverage.put("flag8", true);
80104
right = mid - 1;
81105
} else {
106+
branchCoverage.put("flag9", true);
82107
left = mid + 1;
83108
}
84109
}
110+
printCoverage();
85111
return result;
86112
}
87113
}
88114

115+
public static void printCoverage() {
116+
for (Map.Entry<String, Boolean> entry : branchCoverage.entrySet()) {
117+
System.out.println(entry.getKey() + " was " + (entry.getValue() ? "hit" : "not hit"));
118+
}
119+
}
120+
89121
public static class Solution3 {
90122
/**
91123
* My completely original solution on 1/15/2022. A great practice to solidify binary search basics.

0 commit comments

Comments
 (0)