kk
This commit is contained in:
4
.idea/misc.xml
generated
4
.idea/misc.xml
generated
@@ -8,7 +8,5 @@
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="21" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="graalvm-21" project-jdk-type="JavaSDK" />
|
||||
</project>
|
2
.idea/vcs.xml
generated
2
.idea/vcs.xml
generated
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
29
src/main/java/com/dota/binarySearch/_1146/SnapshotArray.java
Normal file
29
src/main/java/com/dota/binarySearch/_1146/SnapshotArray.java
Normal file
@@ -0,0 +1,29 @@
|
||||
package com.dota.binarySearch._1146;
|
||||
|
||||
import java.util.TreeMap;
|
||||
|
||||
class SnapshotArray {
|
||||
int cnt = 0;
|
||||
TreeMap<Integer, Integer>[] arr ;
|
||||
int n;
|
||||
public SnapshotArray(int length) {
|
||||
arr = new TreeMap[length];
|
||||
n = length;
|
||||
for (int i = 0; i < n; i++) {
|
||||
arr[i] = new TreeMap<>();
|
||||
arr[i].put(0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
public void set(int index, int val) {
|
||||
arr[index].put(cnt, val);
|
||||
}
|
||||
|
||||
public int snap() {
|
||||
return cnt++;
|
||||
}
|
||||
|
||||
public int get(int index, int snap_id) {
|
||||
return arr[index].floorEntry(snap_id).getValue();
|
||||
}
|
||||
}
|
43
src/main/java/com/dota/binarySearch/_981/TimeMap.java
Normal file
43
src/main/java/com/dota/binarySearch/_981/TimeMap.java
Normal file
@@ -0,0 +1,43 @@
|
||||
package com.dota.binarySearch._981;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
class TimeMap {
|
||||
Map<String, List<String>> vmap;
|
||||
Map<String, List<Integer>> imap;
|
||||
public TimeMap() {
|
||||
vmap = new HashMap<>();
|
||||
imap = new HashMap<>();
|
||||
}
|
||||
|
||||
public void set(String key, String value, int timestamp) {
|
||||
vmap.computeIfAbsent(key, k -> new ArrayList<>()).add(value);
|
||||
imap.computeIfAbsent(key, k -> new ArrayList<>()).add(timestamp);
|
||||
}
|
||||
|
||||
public String get(String key, int timestamp) {
|
||||
var vList = vmap.get(key);
|
||||
var iList = imap.get(key);
|
||||
if (vList == null || iList == null) return "";
|
||||
int l= 0, r = iList.size()-1;
|
||||
while (l <= r) {
|
||||
int mid = l + (r - l) / 2;
|
||||
if (iList.get(mid)==timestamp) {
|
||||
return vList.get(mid);
|
||||
}
|
||||
if (iList.get(mid)>timestamp) {
|
||||
r = mid - 1;
|
||||
} else {
|
||||
l = mid + 1;
|
||||
}
|
||||
}
|
||||
if (r < 0) {
|
||||
return "";
|
||||
}
|
||||
return vList.get(r);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user