• (链表)链表和加法的混合


    • 题目:
      您将获得两个链接列表,表示两个非负数。 数字以相反的顺序存储,并且它们的每个节点包含单个数字。 添加两个数字并将其作为链接列表返回。
      
      输入:(243)+(564)
      输出:7 - > 0 - > 8
    • 题目分析:这个是给定两个链表,链表各个位置上面的值想加,链表表示的逆向的整数,其实没差都差不多,从链表前面进行相加减。注意进位的情况。最后一位进位要特殊处理。

    • 代码
      /**
       * Definition for singly-linked list.
       * struct ListNode {
       *     int val;
       *     ListNode *next;
       *     ListNode(int x) : val(x), next(NULL) {}
       * };
       */
      class Solution {
      public:
          ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {
              ListNode *Nhead = new ListNode(0);
              ListNode *head = Nhead;
              int carry = 0;
              int sum = 0;
              while (l1 || l2 || carry){//三种情况,链表加完之后看是否还有进位
                  int sum = 0;
                  if (l1){
                      sum += l1->val;
                      l1 = l1->next;
                  }
                  if (l2){
                      sum += l2->val;
                      l2 = l2->next;
                  }
                  sum = sum + carry;//各个位置的和
                  head->next = new ListNode(sum%10);//直接构造链表值
                  head = head->next;
                  carry = sum/10;//进位情况
              }
              return Nhead->next;
          }
      };
  • 相关阅读:
    算法_2022_分类
    算法_2022_时间&空间复杂度
    JWT详解
    LDAP是什么?
    Bootstrap Blazor 开源UI库介绍Table 虚拟滚动行
    .Net Core 配置文件读取 IOptions、IOptionsMonitor、IOptionsSnapshot
    .NET 7 来了!!!
    git 配置提交模板
    .NET 反向代理YARP 部署Https(SSL)
    .NET 反向代理YARP
  • 原文地址:https://www.cnblogs.com/Kobe10/p/6366231.html
Copyright © 2020-2023  润新知