当前位置: 首页 > news >正文

今日链表系列

2. 两数相加

关键变量就是carry,用来存进位数
思想:
  • 构建一个新的链表又来存两数之和
  • 从头开始遍历两个链表,判断节点是否存在,计算和,同时指针移动
  • 在新链表构建新节点存和,并且更新进位值
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode* head = new ListNode(0);ListNode* cur = head;int carry = 0;while (l1 || l2 || carry){int sum = carry;if (l1){sum += l1->val;l1 = l1->next;}if (l2){sum += l2->val;l2 = l2->next;}cur->next = new ListNode(sum % 10);cur = cur->next;carry = sum / 10;}return head->next;}

19. 删除链表的倒数第n个节点

解法双指针:

思想:

  • 添加虚拟头节点

  • 首先一个指针f从头节点开始移动n次,此时,第二个指针s和f中就相差n-1个节点

  • 然后二者同时开始移动,当f到最后一个节点时,s就在倒数第n+1个节点上

  • 利用s删除第n个节点

class Solution {
public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* dummyHead = new ListNode(0,head);ListNode* f = dummyHead;ListNode* s = dummyHead;while (n--){f = f->next;}while (f->next){f = f->next;s = s->next;}s->next = s->next->next;return dummyHead->next;}
};

不使用虚拟头节点还需要避免指针访问空节点或者链表长度的问题,比如删除第一个节点或者最后一个节点的时候就很麻烦

24. 两两交换节点

--javascripttypescriptshellbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

    ListNode* swapPairs(ListNode* head) {if (head == nullptr || head->next == nullptr) return head;ListNode* dummyHead = new ListNode(0, head);ListNode* pre = dummyHead;ListNode* cur = head;ListNode* pos = cur->next;while (cur && cur->next){ListNode* tmp = pos->next;pre->next = pos;cur->next = tmp;pos->next = cur;// 指针移动pre = cur;cur = tmp;if(tmp) pos = tmp->next;}return dummyHead->next;}
http://www.dtcms.com/a/309278.html

相关文章:

  • 京东零售在智能供应链领域的前沿探索与技术实践
  • X2Doris是SelectDB可视化数据迁移工具,安装与部署使用手册,轻松进行大数据迁移
  • Blender 智能模型库 | 人物·建筑·场景·机械等 近万高精度模型
  • 无人机自动跟随模块技术分析
  • SpringMVC的高级特性
  • 机密计算与AI融合:安全与智能的共生架构
  • 《B3611 【模板】传递闭包》
  • 编程与数学 03-002 计算机网络 17_云计算与网络
  • Java 日期时间处理:分类、用途与性能分析
  • macOS卸载.net core 8.0
  • HarmonyOS】鸿蒙应用开发中常用的三方库介绍和使用示例
  • 代码随想录算法训练营第三十八天
  • NLP 和 LLM 区别、对比 和关系
  • MT Photos图库部署详解:Docker搭建+贝锐蒲公英异地组网远程访问
  • 卸油作业安全设施漏检率↓76%!陌讯多模态融合算法实战解析
  • [AI8051U入门第十二步]W5500-Modbus TCP从机
  • 浏览器【详解】内置Observer(共五种,用于前端监控、图片懒加载、无限滚动、响应式布局、生成安全报告等)
  • 算法26. 删除有序数组中的重复项
  • 宝塔网站如何禁止使用IP访问
  • Shell脚本批量检测IP的443端口联通性
  • ai项目多智能体
  • 【从0开始学习Java | 第11篇】String、StringBuilder与StringBuffer
  • 微信小程序转Vue2组件智能提示词
  • 隧道安全监测哪种方式好?精选方案与自动化监测来对比!
  • 11.Layout-Pinia优化重复请求
  • C++赋值运算符重载
  • PHP Zip 文件操作详解
  • 汽车供应链PPAP自动化审核指南:如何用AI实现规则精准匹配与文件智能校验
  • MyBatis核心
  • MySQL——视图