news 2026/6/5 0:33:26

【学习记录】第六周

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【学习记录】第六周

一、本周核心学习内容

  1. 链表基础知识复习
    单链表结构回顾:复习了链表节点的基本定义、链表的创建、插入、删除和遍历操作
    链表与数组对比:重新梳理了链表在动态内存分配、插入删除效率等方面的优势
    常见链表操作:包括反转链表、合并有序链表、检测环等基础算法
  2. 双指针技术深入掌握
    本周重点学习了三种双指针应用场景:

快慢指针应用

// 1. 检测链表环structListNode{intval;structListNode*next;};inthasCycle(structListNode*head){if(head==NULL||head->next==NULL){return0;}structListNode*slow=head;structListNode*fast=head;while(fast!=NULL&&fast->next!=NULL){slow=slow->next;// 慢指针走一步fast=fast->next->next;// 快指针走两步if(slow==fast){// 两指针相遇,说明有环return1;}}return0;// 无环}

左右指针应用

// 2. 反转链表(双指针实现)structListNode*reverseList(structListNode*head){structListNode*prev=NULL;structListNode*curr=head;while(curr!=NULL){structListNode*nextTemp=curr->next;// 暂存下一个节点curr->next=prev;// 反转指针方向prev=curr;// 前指针后移curr=nextTemp;// 当前指针后移}returnprev;// 新的头节点}

前后指针应用`

// 3. 删除链表倒数第N个节点structListNode*removeNthFromEnd(structListNode*head,intn){structListNodedummy={0,head};// 虚拟头节点简化边界处理structListNode*first=&dummy;structListNode*second=&dummy;// 让first指针先走n+1步for(inti=0;i<=n;i++){first=first->next;}// 两个指针同步移动,直到first到达末尾while(first!=NULL){first=first->next;second=second->next;}// 删除目标节点structListNode*toDelete=second->next;second->next=second->next->next;returndummy.next;}

快慢指针找链表中点

// 找到链表的中间节点structListNode*findMiddle(structListNode*head){if(head==NULL||head->next==NULL){returnhead;}structListNode*slow=head;structListNode*fast=head;// 快指针每次走两步,慢指针每次走一步while(fast!=NULL&&fast->next!=NULL){slow=slow->next;fast=fast->next->next;}returnslow;// 当快指针到达末尾时,慢指针刚好在中间}

双指针判断回文链表

// 判断链表是否为回文结构intisPalindrome(structListNode*head){if(head==NULL||head->next==NULL){return1;}// 步骤1:找到中点structListNode*slow=head;structListNode*fast=head;while(fast->next!=NULL&&fast->next->next!=NULL){slow=slow->next;fast=fast->next->next;}// 步骤2:反转后半部分链表structListNode*secondHalf=reverseList(slow->next);// 步骤3:比较前后两部分structListNode*p1=head;structListNode*p2=secondHalf;intresult=1;while(result&&p2!=NULL){if(p1->val!=p2->val){result=0;}p1=p1->next;p2=p2->next;}// 步骤4:恢复原链表(可选)slow->next=reverseList(secondHalf);returnresult;}

双指针解决两数相加

// 两个链表表示的非负整数相加structListNode*addTwoNumbers(structListNode*l1,structListNode*l2){structListNodedummy={0,NULL};structListNode*curr=&dummy;intcarry=0;// 进位while(l1!=NULL||l2!=NULL||carry!=0){intsum=carry;if(l1!=NULL){sum+=l1->val;l1=l1->next;}if(l2!=NULL){sum+=l2->val;l2=l2->next;}carry=sum/10;// 计算进位curr->next=(structListNode*)malloc(sizeof(structListNode));curr->next->val=sum%10;// 当前位结果curr->next->next=NULL;curr=curr->next;}returndummy.next;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/5 0:52:47

JSP如何结合AES加密实现大文件上传存储?

文件管理系统毕业设计&#xff1a;从零到崩溃的全过程 1. 我的毕业设计困境 "卧槽&#xff0c;这毕业设计是要我命啊&#xff01;"当我看到老师给出的文件管理系统需求时&#xff0c;差点把刚买的珍珠奶茶喷出来。 10G大文件上传&#xff1f;断点续传&#xff1f;…

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

毕业设计项目 基于机器视觉的目标跟踪算法

文章目录 0 前言2 目标跟踪效果3 目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 0 前言 &#x1f525; 今天学长向大家分享一个毕业设计项目 为了大家能够顺利以及最少的精力通过毕设&…

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

【大模型预训练】15-分布式训练概述:解决单机算力瓶颈的核心技术路径

引言分布式训练是现代深度学习中解决单机算力瓶颈的核心技术路径之一。随着深度学习模型的复杂性和数据量的急剧增加&#xff0c;传统的单机训练方式已难以满足高效计算的需求。分布式训练通过将计算任务分配到多个计算节点上&#xff0c;协同完成模型的训练过程&#xff0c;从…

作者头像 李华
网站建设 2026/6/4 18:14:46

重构智慧书-第10条:名声与好运

一、原文呈现名声与好运一个经久不衰&#xff0c;一个流转不定。前者常跚跚来迟&#xff0c;后者可助人乐生。好运须防他人嫉妒;名声须防湮没无闻。你可以诚心求好运有时亦可努力促成之;然一切名声无不以持之以恒的苦干为本。求名的愿望植根于力量与旺盛的精力。从古到今&#…

作者头像 李华
网站建设 2026/6/5 0:54:24

门槛低、含金量高!2026大专计算机专业必考8大证书

各位计算机专业的大专同学&#xff0c;你是否在求职时感到学历竞争力不足&#xff1f;别担心&#xff0c;证书是弥补学历短板、证明专业技能的最佳利器。选择报考门槛低、学习周期短、行业认可度高的证书&#xff0c;能为你带来极高的投资回报。一、 华为HCIA认证&#xff08;华…

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

Transformer彻底剖析(11):多层感知机MLP

目录 1 3blue1brown的MLP视频&#xff1a;图解Transformer之MLP机制解读 2 李沐的MLP视频 2.1 感知机 2.1.1 感知机存在的问题 2.2 多层感知机 2.3 问题 3 为什么transformer中要引入MLP 3.1 Transformer 的结构回顾 3.2 Transformer 中 MLP&#xff08;FFN&#xff09…

作者头像 李华