news 2026/6/6 19:45:17

学习日记day48

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
学习日记day48

Day48_1211

专注时间:6H33min,破纪录了,非常好

每日任务:1h=二刷2道力扣hot100(如果是hard,只做一道就好完成情况及时长:1.5);【学习资源:PyTorch官方文档:https://docs.pytorch.ac.cn/tutorials/beginner/basics/intro.html】1.5h=PyTorch工程实操(完成情况及时长:40);1h=周志华机器学习(完成情况及时长:0);【按照Claude的路线】1h=手撕机器学习算法(完成情况及时长:??);计算机网络45分钟(完成情况及时长:??

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

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

学习内容: 如上

总结与心得:算法题花太多时间了,没事,已经克服了(成功做完,完美吸收知识点)继续加油!

《138.随机链表的复制》

这个解法要注意恢复链表的语法逻辑,见第三个while

""" # Definition for a Node. class Node: def __init__(self, x, next=None, random=None): self.val = int(x) self.next = next self.random = random """ class Solution(object): def copyRandomList(self, head): """ :type head: Node :rtype: Node """ #S3: 先创建:A-copyA-B-copyB-null #然后再断开。这样copy next就接上了,但是random该怎么复制呢?根据断开之前的数据结构特性copy的random = cur.random.next。那这样是不是要遍历三趟?还真是 if not head: return head p = head while p: cp = Node(p.val) tmp = p.next p.next = cp cp.next = tmp p = p.next.next p = head while p: if p.random is None: p.next.random = None else: p.next.random = p.random.next p = p.next.next copy_head = head.next p = head while p: cp = p.next p.next = cp.next p = p.next if p: cp.next = p.next return copy_head

哈希真是巧妙map{node2copynode}

""" # Definition for a Node. class Node: def __init__(self, x, next=None, random=None): self.val = int(x) self.next = next self.random = random """ class Solution(object): def copyRandomList(self, head): """ :type head: Node :rtype: Node """ #之前的想法是错误的,应当是第一趟存哈希map(仅复制VAL),第二趟再去复制next和random,因为第一趟已经建立了映射,第二趟复制next,random时候就不会出现找不到的情况。核心还是map {原节点,复制节点} if not head: return head node2copy_map = {} p = head while p: node2copy_map[p] = Node(p.val) p = p.next p = head #当遇到两种场景时,代码会报错: #原节点是链表最后一个节点 → p.next = None → node2copy_map[p.next] 等价于 node2copy_map[None], #但 None 不在哈希表中; #原节点的 random = None → node2copy_map[p.random] 等价于 node2copy_map[None],同样触发 KeyError。 #而你写的 if node2copy_map[p.next] else None 是先访问 key 再判断,此时已经触发 KeyError,判断逻辑根本没机会执行。 #字典的 dict.get(key, default) 方法是「安全访问」: #若 key 存在,返回对应值; #若 key 不存在,返回 default(这里设为 None) while p: node2copy_map[p].next = node2copy_map[p.next] if p.next else None node2copy_map[p].random = node2copy_map.get(p.random,None) p = p.next return node2copy_map[head]

递归要自己去写,边写变想,空想是很难写的,我现在(第二天再写一遍试试)

""" # Definition for a Node. class Node: def __init__(self, x, next=None, random=None): self.val = int(x) self.next = next self.random = random """ class Solution(object): def __init__(self): self.Node2copy_node = {} def copyRandomList(self, head): """ :type head: Node :rtype: Node """ #S1:如果两趟遍历,第一趟不管random,第二趟处理。那么:怎么根据原来节点的random 去找复制节点该指向哪个random? #还需要继续去思考两趟遍历的做法:原链表跳到random,然后按next走直至next = None,这样就定位了random。 #S2:顺序遍历,如果发现该节点的random节点还未被复制,则先复制;*对于其next也是这样* #其实应当想到递归:发现某个节点的next,random不存在,则递归地创建相应的节点 #为什么我没做出来:想到了哈希,但是用错了数据结构,不能用set,否则找不到指向关系。 #应该用map{原链表Node->copy_Node} 而不是原链表之间的映射。因为我们只想知道原链表的某个节点是否已经被复制 #S3:A->Acopy->B->Bcopy->C->Ccopy->null #依旧是感觉逻辑和语句复杂无从下手 #S2怎么递归??? #终止条件:空节点 if not head: return None #边界条件:已经复制过 if head in self.Node2copy_node: return self.Node2copy_node[head] copy = Node(head.val) self.Node2copy_node[head] = copy copy.next = self.copyRandomList(head.next) copy.random = self.copyRandomList(head.random) #会一直往深处走,去复制链表。那么最终return copy就实现了“返回复制链表的头结点” return copy

3个关于归并排序的题目。3个题都是模版

《912.排序数组》

class Solution(object): def sortArray(self, nums): """ :type nums: List[int] :rtype: List[int] """ def merge_sort(arr): if len(arr)<=1: return arr mid = len(arr)//2 left = merge_sort(arr[:mid]) right = merge_sort(arr[mid:]) return merge(left,right) def merge(left,right): res = [] l = r = 0 while l<len(left) and r<len(right): if left[l]<=right[r]: res.append(left[l]) l+=1 else: res.append(right[r]) r+=1 res+=left[l:] res+=right[r:] return res return merge_sort(nums)

《148.排序链表》

# Definition for singly-linked list. # class ListNode(object): # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution(object): def sortList(self, head): """ :type head: Optional[ListNode] :rtype: Optional[ListNode] """ def merge_sort(head,tail): if not head: return head #这里一定要把head和tail断开 不然会死循环。 if head.next == tail: head.next = None return head #找到链表中点,把这个模版积累下来 slow = fast = head while fast!=tail: slow = slow.next fast = fast.next if fast != tail: fast = fast.next #slow就是中点 mid = slow return merge(merge_sort(head,mid),merge_sort(mid,tail)) def merge(head1,head2): #合并两个有序链表 dummyhead = ListNode(0) res = dummyhead p,q= head1,head2 #一定要记得去移动res指针 while p and q: # '<=' 保证归并排序的稳定性 if p.val <= q.val: res.next = p p = p.next else: res.next = q q = q.next res = res.next if p: res.next = p else: res.next = q return dummyhead.next return merge_sort(head,None)
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution(object): def sortList(self, head): """ :type head: Optional[ListNode] :rtype: Optional[ListNode] """ n=[] p=head if not p or not p.next: return p while p: n.append(p.val) p=p.next n.sort() nh=ListNode(n[0]) p=nh for i in range(len(n)-1): p.next=ListNode(n[i+1]) p=p.next return nh
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/6 6:11:32

第 3 篇:从悲观到希望:如何打破“绝对化”的绝望?

《解锁真正的自我:一场深入内心的成长之旅》专栏 系列二:升级 心智之战 —— 重塑你看世界的方式 朋友们好,我们继续《解锁真正的自我》专栏的第二系列——“升级心智之战”。 在前两篇文章中,我们先后拆解了阻碍成长的“僵固型思维”,以及让我们活得沉重焦虑的“应该…

作者头像 李华
网站建设 2026/6/3 6:51:35

在WebStorm中合并分支

1、切换到要合并的分支2、选择要合并的分支3、提交1、点击左上角的提交按钮出现了这个页面2、点击更改的地方查看是否有冲突的地方手动解决冲突3、点击点击并推送如果没有问题就一直推送就ok了

作者头像 李华
网站建设 2026/6/4 23:47:43

企业照明能否做到“按场景自动运行”?开关驱动器给出了一个现实解法

安科瑞刘鸿鹏在数字化转型成为企业刚需的背景下&#xff0c;照明系统不再只是“开与关”的基础设施&#xff0c;而成为涉及节能管理、安全联动、运营维护的数据入口。本文围绕企业楼宇照明场景&#xff0c;探讨智能开关驱动器在现代照明系统中的应用价值&#xff0c;并结合工程…

作者头像 李华
网站建设 2026/6/6 15:06:19

银河麒麟服务器版操作系统Kylin-Server-V11 安装-MySQL-8.0和MySQL-8.4教程

交-流&#xff1a;831037125 By------云南乐嘟信息技术有限公司------ 个.人.淘.宝.店:首页-专业国产化信创软件服务-淘宝网.喜.欢.的.可.以.支.持.一.下 8.0安装包下载地址&#xff1a;&#xff08;华为欧拉系统)openEuler-22.03、openEuler-24.03-MySQL-8.0安装包-持续更新…

作者头像 李华
网站建设 2026/6/2 23:25:10

CFD: 曲线坐标网格(Curvilinear Grids)资料

文章目录一、基本理论背景1. 坐标变换原理2. 控制方程在曲线坐标下的形式3. 优势与挑战二、经典理论参考资料三、支持曲线坐标网格的开源 CFD 项目1. **Nek5000 / NekRS**2. **OpenFOAM&#xff08;部分功能&#xff09;**3. **CFL3D&#xff08;NASA&#xff09;**4. **OVERFL…

作者头像 李华
网站建设 2026/6/6 17:22:39

AList多平台一键部署指南:新手也能轻松搭建个人云盘

AList多平台一键部署指南&#xff1a;新手也能轻松搭建个人云盘 【免费下载链接】alist 项目地址: https://gitcode.com/gh_mirrors/alis/alist 在数字化时代&#xff0c;我们的文件往往分散在不同的云存储平台中&#xff0c;阿里云盘、百度网盘、OneDrive等各有千秋&a…

作者头像 李华