Leetcode Java Snapshot Array
업데이트:
문제
코드
class SnapshotArray {
private TreeMap<Integer, Integer>[] snapshotArray;
private int snapId;
@SuppressWarnings("unchecked")
public SnapshotArray(int length) {
this.snapshotArray = new TreeMap[length];
for (int i = 0; i < length; i++) {
this.snapshotArray[i] = new TreeMap<Integer, Integer>();
this.snapshotArray[i].put(0, 0);
}
}
public void set(int index, int val) {
this.snapshotArray[index].put(this.snapId, val);
}
public int snap() {
return this.snapId++;
}
public int get(int index, int snap_id) {
return this.snapshotArray[index].floorEntry(snap_id).getValue();
}
}
/**
* Your SnapshotArray object will be instantiated and called as such:
* SnapshotArray obj = new SnapshotArray(length);
* obj.set(index,val);
* int param_2 = obj.snap();
* int param_3 = obj.get(index,snap_id);
*/
결과
설명
- 아래의 기능을 제공하는 SnapshotArray를 완성하는 문제이다.
- 생성자인 SnapshotArray(int length)는 length 크기의 배열을 가진 데이터 구조를 초기화한다.
- 메서드인 set(index, val)은 index번째 요소를 val 값으로 넣어준다.
- 메서드인 snap()은 배열의 스냅샷을 생성하고 생성한 횟수에서 1뺀 값인 snap_id를 반환한다.
- 메서드인 get(index, snap_id)은 index번째 배열의 snap_id에 해당하는 값을 반환한다.
- SnapshotArray의 기능을 수행하기 위한 전역 변수를 정의한다.
- snapshotArray는 index번째 요소 별 스냅샷을 찍은 결과를 저장할 변수이다.
- snapId는 스냅샷을 찍은 횟수를 저장할 변수이다.
- 생성자인 SnapshotArray(int length)를 완성한다.
- 전역 변수인 snapshotArray에 length 크기의 TreeMap으로 초기화한다.
- snapshotArray의 모든 값에 TreeMap을 넣고 키와 값이 0인 초기값을 넣어준다.
- 메서드인 set(index, val)을 완성한다.
- snapshotArray의 index번째 TreeMap에 snapId가 키인 위치에 val을 넣어준다.
- 메서드인 snap()을 완성한다.
- snapId인 스냅샷을 찍은 횟수를 증가시켜준다.
- 메서드인 get(index, snap_id)을 완성한다.
- snapshotArray의 index번째 TreeMap에 snap_id와 같거나 작은 값이 키인 값을 가져와 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기