Skip to content

Commit 6ee4c01

Browse files
add Java solution for 1146
1 parent 66c30a6 commit 6ee4c01

File tree

3 files changed

+72
-2
lines changed
  • paginated_contents/algorithms/2nd_thousand
  • src

3 files changed

+72
-2
lines changed

paginated_contents/algorithms/2nd_thousand/README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -386,8 +386,8 @@
386386
| 1152 | [Analyze User Website Visit Pattern](https://leetcode.com/problems/analyze-user-website-visit-pattern/) | [Solution](https://github.com/fishercoder1534/Leetcode/blob/master/src/main/java/com/fishercoder/solutions/secondthousand/_1152.java) | [:tv:](https://youtu.be/V510Lbtrm5s) | Medium | HashTable, Sort, Array |
387387
| 1151 | [Minimum Swaps to Group All 1's Together](https://leetcode.com/problems/minimum-swaps-to-group-all-1s-together/) | [Solution](https://github.com/fishercoder1534/Leetcode/blob/master/src/main/java/com/fishercoder/solutions/secondthousand/_1151.java) || Medium | Array, Sliding Window |
388388
| 1150 | [Check If a Number Is Majority Element in a Sorted Array](https://leetcode.com/problems/check-if-a-number-is-majority-element-in-a-sorted-array/) | [Solution](https://github.com/fishercoder1534/Leetcode/blob/master/src/main/java/com/fishercoder/solutions/secondthousand/_1150.java) | [:tv:](https://youtu.be/-t2cdVs9cKk) | Easy ||
389-
| 1146 | [Snapshot Array](https://leetcode.com/problems/snapshot-array/) | [Javascript](./javascript/_1146.js) | | Easy ||
390-
| 1143 | [Longest Common Subsequence](https://leetcode.com/problems/longest-common-subsequence/) | [Solution](https://github.com/fishercoder1534/Leetcode/blob/master/src/main/java/com/fishercoder/solutions/secondthousand/_1143.java) | | Medium ||String, DP
389+
| 1146 | [Snapshot Array](https://leetcode.com/problems/snapshot-array/) | [Javascript](./javascript/_1146.js) [Java](https://github.com/fishercoder1534/Leetcode/blob/master/src/main/java/com/fishercoder/solutions/secondthousand/_1146.java) | | Easy ||
390+
| 1143 | [Longest Common Subsequence](https://leetcode.com/problems/longest-common-subsequence/) | [Solution](https://github.com/fishercoder1534/Leetcode/blob/master/src/main/java/com/fishercoder/solutions/secondthousand/_1143.java) | | Medium |String, DP
391391
| 1138 | [Alphabet Board Path](https://leetcode.com/problems/alphabet-board-path/) | [Solution](https://github.com/fishercoder1534/Leetcode/blob/master/src/main/java/com/fishercoder/solutions/secondthousand/_1138.java) | [:tv:](https://youtu.be/rk-aB4rEOyU) | Medium | HashTable, String |
392392
| 1137 | [N-th Tribonacci Number](https://leetcode.com/problems/n-th-tribonacci-number/) | [Solution](https://github.com/fishercoder1534/Leetcode/blob/master/src/main/java/com/fishercoder/solutions/secondthousand/_1137.java) | | Easy ||
393393
| 1136 | [Parallel Courses](https://leetcode.com/problems/parallel-courses/) | [Solution](https://github.com/fishercoder1534/Leetcode/blob/master/src/main/java/com/fishercoder/solutions/secondthousand/_1136.java) | | Medium ||
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.fishercoder.solutions.secondthousand;
2+
3+
import java.util.*;
4+
5+
public class _1146 {
6+
public static class Solution1 {
7+
public static class SnapshotArray {
8+
TreeMap<Integer, Integer>[] snapshots;//using this data structure is much more efficient in terms of storage, esp. if snap() calls happen frequently
9+
int snapId;
10+
11+
public SnapshotArray(int length) {
12+
snapshots = new TreeMap[length];
13+
snapId = 0;
14+
for (int i = 0; i < length; i++) {
15+
snapshots[i] = new TreeMap<>();
16+
snapshots[i].put(0, 0);
17+
}
18+
}
19+
20+
public void set(int index, int val) {
21+
snapshots[index].put(snapId, val);
22+
}
23+
24+
public int snap() {
25+
return snapId++;
26+
}
27+
28+
public int get(int index, int snap_id) {
29+
return snapshots[index].floorEntry(snap_id).getValue();
30+
}
31+
}
32+
}
33+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.fishercoder.secondthousand;
2+
3+
import com.fishercoder.solutions.secondthousand._1146;
4+
import org.junit.jupiter.api.BeforeEach;
5+
import org.junit.jupiter.api.Test;
6+
7+
import static org.junit.Assert.assertEquals;
8+
9+
public class _1146Test {
10+
private static _1146.Solution1.SnapshotArray snapshotArray;
11+
12+
@BeforeEach
13+
public void setup() {
14+
15+
}
16+
17+
@Test
18+
public void test1() {
19+
snapshotArray = new _1146.Solution1.SnapshotArray(3);
20+
snapshotArray.set(0, 5);
21+
snapshotArray.snap();
22+
snapshotArray.set(0, 6);
23+
assertEquals(5, snapshotArray.get(0, 0));
24+
}
25+
26+
@Test
27+
public void test2() {
28+
snapshotArray = new _1146.Solution1.SnapshotArray(2);
29+
snapshotArray.snap();
30+
snapshotArray.set(1, 17);
31+
snapshotArray.set(0, 20);
32+
snapshotArray.snap();
33+
snapshotArray.snap();
34+
snapshotArray.snap();
35+
}
36+
37+
}

0 commit comments

Comments
 (0)