LeetCode题目:2. Add Two Numbers
来源:互联网 发布:envi裁剪landsat8数据 编辑:程序博客网 时间:2024/05/22 12:21
LeetCode题目:2. Add Two Numbers
原题链接:https://leetcode.com/problems/add-two-numbers/description/
解题思路:
核心思想:
将链表看成十进制数,同时递归两个链表,对相同的位置的数进行相加,然后得到进位,进位加到下一位数。
代码细节:
1.为了不改变输入链表,新建一个链表作为输出,并新建一个指针用于新建链表的递归。
2.add表示进位,每位的进位只能是0或者1其中一个
3.新建链表创造新节点的时候需要申请内存空间
坑点:
1.输出链表的头结点可能为0,即0+0=0
2.当短链表递归结束的时候,长链表仍然可能需要继续递归,因为可能有进位的存在,如:1+1999
3.可能产生一个新的进位,即新节点,如:50+50
代码:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { int add; // 下一位的加值,0/1 ListNode* returnListHead; // 返回的链表头 ListNode* returnTemp; // 用于遍历返回的链表 ListNode* temp; // 遍历用节点,遍历两条链表中较长那条 // 因为第一个值确定,可以直接进行初始化 returnListHead = new ListNode((l1->val + l2->val) % 10); returnTemp = returnListHead; add = (l1->val + l2->val) / 10; // 不断循环相加 while (1) { l1 = l1->next; l2 = l2->next; if (l1 == NULL) { temp = l2; break; } if (l2 == NULL) { temp = l1; break; } // 链表添加,add修改值 returnTemp->next = new ListNode((l1->val + l2->val + add) % 10); add = (l1->val + l2->val + add) / 10; returnTemp = returnTemp->next; } while (temp != NULL) { // 链表添加,add修改值 returnTemp->next = new ListNode((temp->val + add) % 10); add = (temp->val + add) / 10; returnTemp = returnTemp->next; temp = temp->next; } // 若最后还有一个进位,链表加上进位 if (add == 1) returnTemp->next = new ListNode(1); return returnListHead;}
阅读全文
0 0
- Leetcode题目分析 2. Add Two Numbers
- 47.leetcode题目2. Add Two Numbers
- LeetCode 作业题目:2. Add Two Numbers
- LeetCode题目:2. Add Two Numbers
- LeetCode题目之5 Add Two Numbers
- [LeetCode]2.Add Two Numbers
- LeetCode 2.Add Two Numbers
- LeetCode --- 2. Add Two Numbers
- [Leetcode] 2. Add Two Numbers
- 【leetcode】2. Add Two Numbers
- leetcode 2. Add Two Numbers
- LeetCode-2.Add Two Numbers
- [leetcode] 2. Add Two Numbers
- 【LeetCode】2. Add Two Numbers
- LeetCode - 2. Add Two Numbers
- LeetCode 2.Add Two Numbers
- LeetCode 2. Add Two Numbers
- Leetcode 2. Add Two Numbers
- 基于ssh免密码登录
- 服务器地址和客户端地址
- java作业2
- CCF认证201412-1 门禁系统
- 1039 vector+hash
- LeetCode题目:2. Add Two Numbers
- HDU 6201 transaction transaction transaction [网络流]
- Advanced Programming in UNIX Environment Episode 3
- nginx简单搭建负载均衡服务器(windows)
- 染色问题
- maven 光速入门攻略06
- Java作业3
- 如何做一名程序员
- 03-mysql中修改密码