课程讨论帖


  • administrators

    同学们: :rofl:

    因为微信上的信息很快会被大量的对话挤掉,特开辟此平台,欢迎大家使用。
    如果有课程上,或者内容不清楚的地方欢迎大家踊跃提问。
    我们的老师和助教会给大家提供答案!

    点击下方回复按钮,发出您的提问吧~



  • 大家好。我没刷完题,也没什么基础,非cs专业,刚开始学习哈。第一次课听课的时候,就打算用python自己也跟着写习题,理解一下思路。我写的python据说

    风格很差

    希望大家如果有空,可以贴同样问题你们的python代码。谢谢大家!

    题目1. LRU Cache design

    """
    2
    6
    SET 1 2
    SET 2 3
    SET 3 5
    SET 4 6
    GET 2
    GET 3
    
    Answer: None, 5
    """
    
    LRU_size = 2
    
    
    class Node(object):
        def __init__(self, key, value):
            self.key = key
            self.value = value
            self.prev = None
            self.nxt = None
    
    head = Node(None, None)
    tail = Node(None, None)
    head.prev = tail
    head.nxt = tail
    tail.prev = head
    tail.nxt = head
    Lru_key = {}
    
    
    class Solution(object):
        def attach(self, node):
            node.nxt = tail
            node.prev = tail.prev
            tail.prev.nxt = node
            tail.prev = node
    
        def detach(self, node):
            node.prev.nxt = node.nxt
            node.nxt.prev = node.prev
            node.prev = None
            node.nxt = None
    
        def SET(self, key, value):
            if key in Lru_key:
                oldnode = Lru_key[key]
                oldnode.value = value
                self.detach(oldnode)
                self.attach(oldnode)
            else:
                if len(Lru_key) == LRU_size:
                    del Lru_key[head.nxt.key]
                    self.detach(head.nxt)
                newnode = Node(key, value)
                Lru_key[key] = newnode
                self.attach(newnode)
    
        def GET(self, key):
            if key in Lru_key:
                node = Lru_key[key]
                self.detach(node)
                self.attach(node)
                print node.value
                return node.value
            else:
                print None
                return None
    
    a = Solution()
    a.SET(1,2)
    a.SET(2,3)
    a.SET(3,5)
    a.SET(4,6)
    a.GET(2)
    a.GET(3)
    


  • 我感觉命名风格之类的还不错呀。

    我的方法往往是自己先写一个代码,然后再google一下其他人的代码,比较的提升~


登录后回复
 

与 BitTiger Community 的连接断开,我们正在尝试重连,请耐心等待