学习日记day50

Day50_1215

专注时间:5H55min

每日任务: 2h= 复习数据库(完成情况及时长 ); 1h=二刷2道力扣hot100(如果是hard,只做一道就好 完成情况及时长: 今日1道高频面试手撕题146.LRU缓存,做了2H46min );【学习资源:PyTorch官方文档:https://docs.pytorch.ac.cn/tutorials/beginner/basics/intro.html】1.5h=PyTorch工程实操(完成情况及时长: 10+8+45把第二个pytorch网页的"局部禁用梯度计算"看懂,就去看第一个pytorch网页 );1h=周志华机器学习(完成情况及时长: 7 );【按照Claude的路线】1h=手撕机器学习算法(完成情况及时长: ?? );计算机网络45分钟(完成情况及时长: ??

学完机器学习,然后是深度学习、搜广推经典模型(也有很多要手撕的,见Claude生成的)。学完PyTorch,之后是Transformer与大模型架构(见Gemini3pro生成的阶段2)。学快一点,学完还要做搜广推的实战项目。准备一个GitHub Repo把所有手撕过的算法整理进去,这会是最好的复习资料。

必须熟记的API、最简洁的GPT实现、带注释的Transformer实现、推荐系统模型库(包含主流模型实现)还有"Let's build GPT"系列学习视频见Claude的第20页。

学习内容: 如上

总结与心得:专注时长很可以。周六周日懈怠+休息了。《146.LRU缓存》是高频手撕面试题。看了《模式识别与机器学习》历年试卷,感觉不去上课,不改学习方法会挂科啊【GitHub repo并且学习的ML等算法都要去做笔记手敲,这样才好复习,而且也才是真正学进去,不然又忘记了。】以后每次课都去,晚上下课后再去练,练完就不做有氧了。买个笔记本电脑充电宝吧。

《146.LRU缓存》

python 复制代码
class DoublyLinkedNode(object):
    def __init__(self,key=0,value=0):
        self.prev = None
        self.next = None
        self.key = key
        self.value = value
class LRUCache(object):
    #move2head deletenode deleltetail add2head
    #get(3)那么key:3对应的(key,value)就算被使用过了
    def __init__(self, capacity):
        """
        :type capacity: int
        """
        #注意这里用了伪头节点和伪尾节点,所以有些函数的逻辑和双向链表不一样
        self.cache = dict()
        self.size = 0
        self.capacity = capacity
        self.head = DoublyLinkedNode()
        self.tail = DoublyLinkedNode()
        self.head.next = self.tail
        self.tail.prev = self.head

    def get(self, key):
        """
        :type key: int
        :rtype: int
        """
        if key not in self.cache:
            return -1
        node = self.cache[key]
        self.move2head(node)
        return node.value
        
    def put(self, key, value):
        """
        :type key: int
        :type value: int
        :rtype: None
        """
        if key in self.cache:
            node = self.cache[key]
            node.value = value
            self.move2head(node)
        else:
            node = DoublyLinkedNode(key,value)
            self.cache[key] = node 
            self.add2head(node)
            self.size += 1
            if self.size > self.capacity:
                denode = self.removetail()
                self.size -= 1
                #dict.pop(key)删除键值对
                self.cache.pop(denode.key)
            

    def delete(self,node):
        node.next.prev = node.prev
        node.prev.next = node.next
    
    def move2head(self,node):
        self.delete(node)
        self.add2head(node)

    def add2head(self,node):
        #伪头节点
        node.next = self.head.next
        node.prev = self.head
        self.head.next.prev = node
        self.head.next = node

    def removetail(self):
        #伪尾节点
        #return:DLinkedNode  被移除的节点(用于删除哈希表中的对应项)
        node = self.tail.prev
        self.delete(node)
        return node

# Your LRUCache object will be instantiated and called as such:
# obj = LRUCache(capacity)
# param_1 = obj.get(key)
# obj.put(key,value)
相关推荐
@小匠3 小时前
Read Frog:一款开源的 AI 驱动浏览器语言学习扩展
人工智能·学习
炽烈小老头10 小时前
【 每天学习一点算法 2026/04/12】x 的平方根
学习·算法
阿杰学AI10 小时前
AI核心知识115—大语言模型之 自监督学习(简洁且通俗易懂版)
人工智能·学习·ai·语言模型·aigc·监督学习·自监督学习
九英里路11 小时前
OS学习之路——动静态库制作与原理
linux·学习·操作系统·unix·进程·编译·动静态库
red_redemption11 小时前
自由学习记录(160)
学习
南無忘码至尊11 小时前
Unity学习90天-第2天-认识Unity生命周期函数并用 Update 控制物体移动,FixedUpdate 控制物理
学习·unity·游戏引擎
报错小能手12 小时前
ios开发方向——swift错误处理:do/try/catch、Result、throws
开发语言·学习·ios·swift
LX5677712 小时前
传统销售如何系统学习成为AI智能销售顾问?认证指南
人工智能·学习
做cv的小昊12 小时前
【TJU】应用统计学——第五周作业(3.1 假设检验的基本思想、3.2 单个正态总体参数的假设检验)
学习·线性代数·机器学习·数学建模·矩阵·概率论·tju
格鸰爱童话13 小时前
向AI学习项目技能(六)
java·人工智能·spring boot·python·学习