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

惠州高端网站建设wordpress 付费主题 时间

惠州高端网站建设,wordpress 付费主题 时间,物联网的含义是什么意思,无锡地区网站制作公司排名题目 两数相加 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数…

题目

  1. 两数相加

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例 1:

输入:l1 = [2,4,3], l2 = [5,6,4]

输出:[7,0,8]

解释:342 + 465 = 807.

示例 2:

输入:l1 = [0], l2 = [0]

输出:[0]

示例 3:

输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]

输出:[8,9,9,9,0,0,0,1]

来源:力扣热题100 2. 两数相加


思路(注意事项)

代码精简将三个while和一个if合并,使得代码精简很多。


代码精简

class Solution {
public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode* head = new ListNode(0); // 虚拟头节点ListNode* p = head; // 当前节点指针int flag = 0; // 进位标志// 遍历两个链表while (l1 != nullptr || l2 != nullptr || flag != 0) {int sum = flag; // 初始化为进位值if (l1 != nullptr) {sum += l1->val;l1 = l1->next;}if (l2 != nullptr) {sum += l2->val;l2 = l2->next;}flag = sum >= 10 ? 1 : 0; // 更新进位标志sum %= 10; // 取个位数p->next = new ListNode(sum); // 创建新节点并连接到链表p = p->next; // 移动当前节点指针}return head->next; // 返回结果链表的头节点}
};

纯代码

class Solution {
private:void func (int sum){flag = sum >= 10 ? 1 : 0;sum %= 10;ListNode* l = new ListNode(sum);p -> next = l;p = p ->next;}
public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode* head = new ListNode(0);ListNode *p = head;int flag = 0;while (l1 != nullptr && l2 != nullptr){int sum = l1 -> val + l2 -> val + flag;func(sum);l1 = l1 -> next;l2 = l2 -> next;}while (l1 != nullptr) {int sum = l1 -> val + flag;func(sum);l1 = l1 -> next;}while (l2 != nullptr) {int sum = l2 -> val + flag;func(sum);l2 = l2 -> next;}if (flag == 1){ListNode* l = new ListNode(1);p -> next = l;}return head -> next;}
};

题解(加注释)

class Solution {
private:int flag = 0; // 进位标志,初始化为 0ListNode* p = nullptr; // 当前节点指针,用于构建新链表// 辅助函数:处理当前位的和,并更新链表void func(int sum) {flag = sum >= 10 ? 1 : 0; // 判断是否需要进位sum %= 10; // 取个位数ListNode* l = new ListNode(sum); // 创建新节点p->next = l; // 将新节点连接到链表p = p->next; // 移动当前节点指针}public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode* head = new ListNode(0); // 创建虚拟头节点p = head; // 初始化当前节点指针// 遍历两个链表,逐位相加while (l1 != nullptr && l2 != nullptr) {int sum = l1->val + l2->val + flag; // 计算当前位的和(包括进位)func(sum); // 处理当前位的和l1 = l1->next; // 移动 l1 指针l2 = l2->next; // 移动 l2 指针}// 处理 l1 剩余的节点while (l1 != nullptr) {int sum = l1->val + flag; // 计算当前位的和(包括进位)func(sum); // 处理当前位的和l1 = l1->next; // 移动 l1 指针}// 处理 l2 剩余的节点while (l2 != nullptr) {int sum = l2->val + flag; // 计算当前位的和(包括进位)func(sum); // 处理当前位的和l2 = l2->next; // 移动 l2 指针}// 如果最后还有进位,添加一个新节点if (flag == 1) {ListNode* l = new ListNode(1);p->next = l;}return head->next; // 返回结果链表的头节点(跳过虚拟头节点)}
};
http://www.dtcms.com/wzjs/817375.html

相关文章:

  • 燕郊个人做网站广州seo网站推广顾问
  • 包年seo和整站优化如何做网站的cdn
  • 网页好看的网站设计有没有做微场景的网站
  • 福永三合一网站设计邢台建设一个企业网站
  • 解释网站为什么这样做广告图文制作
  • 大型购物网站绿色郑州网站
  • 六安网站建设招商同人那个小说网站做的最好
  • 郑州建设工程交易中心网站互联网开发是做什么的
  • 遂溪手机网站建设沈阳网站制作公司思路
  • 策划网站建设网站建设公司的业务规划
  • 网站名称价格wordpress 分类目录导航
  • 网站怎么发邮件dw做的网站如何让别人看看
  • 国外社交网站设计欣赏电子商务
  • 定制网站系统四川招标投标网
  • 网站添加可信任站点怎么做wordpress自定义分类发
  • 向国外支付网站开发费网站备案是在哪个部门
  • 网站建设需要的软件是什么做系统的图标下载网站
  • 京东网站建设策略免费工程信息查询
  • 西安网站建设价格openwrt 做视频网站
  • 陕西网站建站php程序员网站开发建设
  • 企业网站的作用wordpress写公式
  • 旅游网站建设的详细方案成都企业网站设计制作
  • 悬赏做海报的网站智慧团建网站进不去
  • 厦门网站建设满山红欢迎进入河南国安建设集团有限公司网站
  • 汕头响应式网站如何让网页适应屏幕尺寸
  • 网站开发界面图标设计做信息网站要办icp证吗
  • 虚拟网站官网手机网站工具
  • 做外贸通常用哪些网站网站开发公司所需投入资源
  • 做安全防护信息的网站建站系统的选用分析
  • wordpress动漫视频网站网站首页图片素材