其他分享
首页 > 其他分享> > 1146. Snapshot Array

1146. Snapshot Array

作者:互联网

Implement a SnapshotArray that supports the following interface:

 

 

Solution0:

class SnapshotArray:

    def __init__(self, length: int):
        self.array = [[0] for i in range(length)]
        self.indx = [[0] for i in range(length)]
        self.snaps = 0

    def set(self, index: int, val: int) -> None:
        snaps = self.snaps
        self.indx[index].append(snaps)
        self.array[index].append(val)

    def snap(self) -> int:
        self.snaps += 1
        return self.snaps - 1

    def get(self, index: int, snap_id: int) -> int:

        if not self.indx[index]:
            return 0
        left = 0
        right = len(self.indx[index]) - 1
        while (left < right):
            mid = left + (right - left)//2 
            if (self.indx[index][mid] > snap_id):
                right = mid
            else:
                left = mid + 1
        
        if self.indx[index][left] > snap_id:
            return self.array[index][left-1]
        else:
            return self.array[index][left]

 

Solution1:

class SnapshotArray(object):

    def __init__(self, length):
        """
        :type length: int
        """
        self.snaps = 0
        self.store = dict()
        self.store[0] = dict()
        
        

    def set(self, index, val):
        """
        :type index: int
        :type val: int
        :rtype: None
        """
        self.store[self.snaps][index] = val
        

    def snap(self):
        """
        :rtype: int
        """
        self.snaps += 1
        a = (self.store[self.snaps -1]).copy()
        self.store[self.snaps] = a
        return self.snaps -1
            

    def get(self, index, snap_id):
        """
        :type index: int
        :type snap_id: int
        :rtype: int
        """
        if index in self.store[snap_id]:
            return self.store[snap_id][index]
        else:
            return 0

 

标签:index,snaps,1146,int,self,Snapshot,snap,Array,id
来源: https://www.cnblogs.com/beatets/p/12170846.html