学习日记day76

Day76_0204

专注时间:目标是:5h30~6h。实际:5h32min。1.调整学习路线;2.调整算法学习方法;3.重视工程能力。

每日任务: 饭后的休息(25min),学习间歇的休息(15min)都用手表计时器来监督

{step1} 40min =二刷 1 道力扣hot100 +昨天的题再做一遍 (如果是hard,只做一道就好 完成情况及时长: 二刷昨日题目:min,今日题目: min );【学习资源:PyTorch官方文档:https://docs.pytorch.ac.cn/tutorials/beginner/basics/intro.html】1.5h=PyTorch工程实操(完成情况及时长: 0。把第二个pytorch网页的"局部禁用梯度计算"看懂,就去看第一个pytorch网页 ); {step4} 1h=周志华机器学习(完成情况及时长: 0min ); {setp3} 1.5h+(claude的《RL4LLM》+《Claude Opus 4.5深度思考RLHF学习路径》学习路径,时长: min ) {step2,计网考纲复习+模式识别复习} 3h =计算机网络考纲题目背诵] (完成情况及时长:);

学完机器学习,然后是深度学习。学完PyTorch,之后是Transformer与大模型架构(见Gemini3pro生成的阶段2)。学快一点。准备一个GitHub Repo把所有手撕过的算法整理进去,这会是最好的复习资料。

必须熟记的API、最简洁的GPT实现、带注释的Transformer实现、推荐系统模型库(包含主流模型实现)还有"Let's build GPT"系列学习视频见Claude的第20页。 冰哥听讲座,老师说: GPT是最好的老师,不需要其他家教,清华学生智商120,GPT有140。多用大模型来帮助学习。

学习内容:力扣(50+45+32)、华为题目看了一两道(12)、ML(logit代码)、调研搜集就业方向和学习路径

总结与心得:偷懒了几天,今天也有做的不好的地方:每顿饭后/健身回来后都是拖很久才学习,而且只学了3个专注周期,而且看游戏比赛直播和刷抖音占了很多时间,明天改改,依旧是逼自己学15分钟,进入状态之后就可以了。然后要达到每天的专注时长目标,今天刷到华为AI岗的线上题目,不管是算法题还是八股,都有难度和门槛,DL岗位也考察ML,所以这学期ML没白学,但是没能并行地学习DL,比较遗憾。道阻且长,如果一天一天的荒废,3年下来也就那样了。觉得困就去房间睡,不困就学到15.00再睡,不要找状态不好的借口躺着。之前在宿舍都没法专心学习,后来可以了,在家学习应该也是能最终做到的。整理学习路线时候发现AI给的路线不靠谱不实际也不成体系,然后就不知道该走什么方向,学什么方向,找了很久,终于找到合适靠谱的博主分享的学习路线,长舒了一口气。明天重新整理。

《41.缺失的第一个正数》

python 复制代码
class Solution(object):
    def firstMissingPositive(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        #可以推断出答案在1到len(nums)+1之间。
        #用原地数组哈希,我们只关心数组中1到len(nums)有没有出现,映射:num(key)->nums-1(idx)
        #若映射完后,顺序遍历nums,nums[i]!=i+1,则为答案。若1到len(nums)都出现了,答案就是n+1
        n = len(nums)
        #这样写有个问题,顺序遍历时候会把后面待处理的元素交换到前面来,而顺序遍历是不回头的,待处理元素就一直得不到处理,从而出错。既然是放置,可以用while和指针,指针前面的位置表示已经放置好,while 指针==len(nums)就可以退出循环了。也不对,如果我已经知道了哪里没放置好,答案也早就有了。
        #核心改进:对每个索引 i,用 while 循环持续处理,直到当前 i 位置的元素要么不在 1~n 范围内,要么已经放到了正确的位置上,再移动到下一个索引 i,这样就不会遗漏交换后新出现的待处理元素。
        for i in range(n):
            #该数在范围内,需要被映射放置;该数不在范围内,不需要处理
            #如果有重复的数,并且该数在范围内,就会死循环
            while 0<=nums[i]-1<=n-1 and nums[i]!=nums[nums[i]-1]:
                nums[nums[i]-1],nums[i] = nums[i],nums[nums[i]-1]
        #时间复杂度应该是多少呢?每个元素至多被交换一次,且遍历一次。所以是o(n)

        for i in range(n):
            if nums[i]!=i+1:
                return i+1
        #不要漏解
        return n+1

        

《33.搜索旋转排序数组》

python 复制代码
class Solution(object):
    def search(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
        #有点像快速排序的变体快速选择?根据区间的两个端点值与target的大小比较,来确定所需要进一步搜索的区间
        #如果左端点比右端点大,说明当前区间不是一个单增的区间,而是有两个单增的区间。然后比较端点和target的大小来选区间。这样还是o(n),因为找答案所在区间是o(n)
        def erfen(nums,l,r,target):
            while l<r:
                mid = (l+r)//2
                if nums[mid]>=target:
                    r = mid
                else:
                    l = mid+1
            return l
        l,r = 0,len(nums)-1
        while nums[l]>nums[r] and target<=nums[r]:
            l+=1
        while nums[l]>nums[r] and target>=nums[l]:
            r-=1
        res=erfen(nums,l,r,target)
        return res if nums[res] == target else -1
        
python 复制代码
class Solution(object):
    def search(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
        #既然是二分的变式,那么先考虑正常二分过程,分析该过程能从哪些地方改进
        #在二分时候mid将区间一分为二,[l,mid] [mid+1,r]那么一定有一边的区间是有序的,或者两边的区间都有序。
        #根据有序的那个部分确定我们该如何改变二分查找的上下界[l,mid-1] [mid] [mid+1,r] if nums[mid]==target,return mid
        if len(nums) == 1:
            return 0 if nums[0]==target else -1
        l,r = 0,len(nums)-1
        #因为有if nums[mid]==target的判断所以要l<=r
        while l<=r:
            mid = (l+r)//2
            if nums[mid] == target:
                return mid
            #左边区间有序,不能漏取等号,太多细节了
            if nums[l]<=nums[mid]:
                #答案在左半边,所以动r
                if nums[l]<=target<nums[mid]:
                    r = mid-1
                #答案不在这个区间,动l来抛弃这个区间
                else:
                    l = mid+1
            #右边区间有序
            else:
                if nums[mid]<target<=nums[r]:
                    l = mid+1
                else:
                    r = mid-1
        return -1

《34.在排序数组中查找元素的第一个和最后一个位置》

python 复制代码
class Solution(object):
    def searchRange(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        if not nums:
            return [-1,-1]
        #或者这样记忆?mid\mid+1,找的是mid,在mid+1的左边,所以是左边界
        #mid/mid-1。mid在右边,所以是右边界
        def Lidx(nums,target):
            l,r = 0,len(nums)-1
            while l < r:
                mid = (l+r)/2
                #遇到大于等于target的都要去找左边的区间,所以是找左边界。
                if nums[mid]>=target:
                    r = mid
                else:
                    l = mid+1
            return l if nums[l]==target else -1
        def Ridx(nums,target):
            l,r = 0,len(nums)-1
            while l<r:
                mid = (l+r+1)/2
                #遇到小于等于target的都要把去找右边的区间,所以是找右边界。
                if nums[mid]<=target:
                    l = mid
                else:
                    r = mid-1
            return l if nums[l]==target else -1
        return [Lidx(nums,target),Ridx(nums,target)]
相关推荐
禹中一只鱼8 小时前
【力扣热题100学习笔记】 - 哈希
java·学习·leetcode·哈希算法
SteveSenna10 小时前
项目:Trossen Arm MuJoCo
人工智能·学习·算法
m0_7473041610 小时前
GNN学习
学习
Sagittarius_A*10 小时前
监督学习(Supervised Learning)
人工智能·学习·机器学习·监督学习
qqty121711 小时前
Java进阶学习之路
java·开发语言·学习
WHS-_-202211 小时前
Python 算法题学习笔记一
python·学习·算法
_李小白11 小时前
【OSG学习笔记】Day 22: StateSet 与 StateAttribute (渲染状态)
笔记·学习
TorrieLeung12 小时前
碎片学习|外贸tob 一手交钱一手交货
学习·tob·外贸销售·工地英语
丝斯201114 小时前
AI学习笔记整理(79)——Python学习8
人工智能·笔记·学习
啥咕啦呛15 小时前
java打卡学习5:java基础学习
java·开发语言·学习