LeetCode02 Add Two Numbers
来源:互联网 发布:知网数据期刊论文 编辑:程序博客网 时间:2024/06/06 19:44
题目 :02 Add two numbers 难度:Medium
解题思路:本来就不是一个很难的问题。我一开始是把两个linked list转换为两个整数,然后进行相加,发现会溢出,而且对计算的数据长度有很大的限制,于是就改用按位相加的方法,具体步骤如下:
1. 构造vector,用来存储获得的位
2. 提取l1和l2的当前结点 分成四种情况来进行计算,分别是(判断当前结点是否为空)
1> l1和l2都不为空 2>l1为空,l2不为空 3>l1不为空,l2为空 4>l1,l2都为空
3. 进行计算,如有进位,则一并加上4. 最后将vector表达为链表,并返回此链表
具体代码如下:
ListNode* addTwoNumbers(ListNode *l1,ListNode *l2){vector<int>vec;//用来存储结果int come=0;//用来存储进位while(l1!=NULL||l2!=NULL){if(l1!=NULL&&l2!=NULL){int temp=l1->val+l2->val;temp+=come;if(temp>=10){int num=temp%10;vec.push_back(num);come=1;}else{vec.push_back(temp);come=0;}}if(l1!=NULL&&l2==NULL){int temp=l1->val;temp+=come;if(temp>=10){int num=temp%10;vec.push_back(num);come=1;}else{vec.push_back(temp);come=0;}}if(l1==NULL&&l2==NULL){int temp=l2->val;temp+=come;if(temp>=10){int num=temp%10;vec.push_back(num);come=1;}else{vec.push_back(temp);come=0;}}l1=l1->next;l2=l2->next;}ListNode *all=new ListNode(vec[0]);ListNode *Current=all;int i=1;while(1){if(i>=vec.size()-1)break;ListNode *temp=new ListNode(vec[i]);Current->next=temp;Current=temp;i+=1;} return all;}
0 0
- LeetCode02 Add Two Numbers
- LeetCode02:Add Two Numbers Java实现
- leetcode02-Add Two Numbers之beats98.68%Java版本
- Add two numbers & Add binary
- LeetCode: Add Two Numbers
- Add Two Numbers
- LeetCode: Add Two Numbers
- [LeetCode]Add Two Numbers
- LeetCode Add Two Numbers
- Leetcode: Add Two Numbers
- Add Two Numbers
- LeetCode : Add Two Numbers
- LeetCode Add Two Numbers
- [LeetCode] Add Two Numbers
- LeetCode4: Add Two Numbers
- Leetcode : Add Two Numbers
- Add Two Numbers
- 【leetcode】Add Two Numbers
- CSS高级选择器
- Scikit-Learn的基本使用
- 按钮控件的编程实例
- 花了那么多钱做推广都没效?看完你就想通了
- Android自带系统样式总结
- LeetCode02 Add Two Numbers
- Java中Class.forName()用法详解
- SQL with as 的用法 以及递归函数的写法 递归层次查询
- Druid源码分析--整体结构
- AVR外部中断INT1检测按键,使用LED作指示
- Wpf 系统异常提示框
- java值传递
- 手写快排及心得
- shareSDK默认弹出九宫格的文字/图片不见了