C++ 这段代码给了我运行时错误。如何修复此代码?
这是一个leetcode问题,它是这样开始的,给你两个非空的链表,代表两个非负整数。数字按相反顺序存储,每个节点包含一个数字。将这两个数字相加,并将其作为链表返回 您可以假设这两个数字不包含任何前导零,除了数字0本身C++ 这段代码给了我运行时错误。如何修复此代码?,c++,runtime-error,buffer-overflow,C++,Runtime Error,Buffer Overflow,这是一个leetcode问题,它是这样开始的,给你两个非空的链表,代表两个非负整数。数字按相反顺序存储,每个节点包含一个数字。将这两个数字相加,并将其作为链表返回 您可以假设这两个数字不包含任何前导零,除了数字0本身 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullpt
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
int反转(int n){
int reversedNumber=0,余数;
而(n!=0){
余数=n%10;
反向编号=反向编号*10+余数;
n/=10;
}
返回反向编号;
}
int converttoint(向量数组){
整数=0;
对于(int i=0;i<3;i++){
数字*=10;
数字+=数组[i];
}
返回号码;
}
类解决方案{
公众:
ListNode*AddTwoNumber(ListNode*l1,ListNode*l2){
载体vec,vec2;
而(l1->next!=NULL | | l2->next!=NULL){
如果(l1->val!=0){
向量插入(向量开始(),l1->val);
l1=l1->next;
}
如果(l2->val!=0){
插入(vec2.begin(),l2->val);
l2=l2->next;
}
}
//增加价值
int结果=CONVERTOINT(vec)+CONVERTOINT(vec2);
int reversedvalue=反向(结果);
矢量otp;
结构ListNode*r1;
for(int i=to_string(reversedvalue).length();i>=0;i--){
otp.推回(反向值%10);
r1->val=reversedvalue%10;
r1=r1->next;
反向值/=10;
}
r1->next=NULL;
返回r1;
}
};
在converttoint
功能中,我不明白您为什么会:
int reverse(int n) {
int reversedNumber = 0, remainder;
while (n != 0) {
remainder = n % 10;
reversedNumber = reversedNumber * 10 + remainder;
n /= 10;
}
return reversedNumber;
}
int converttoint(vector < int > array) {
int number = 0;
for (int i = 0; i < 3; i++) {
number *= 10;
number += array[i];
}
return number;
}
class Solution {
public:
ListNode * addTwoNumbers(ListNode * l1, ListNode * l2) {
vector<int> vec, vec2;
while (l1->next != NULL || l2->next != NULL) {
if (l1->val != 0) {
vec.insert(vec.begin(), l1->val);
l1 = l1->next;
}
if (l2->val != 0) {
vec2.insert(vec2.begin(), l2->val);
l2 = l2->next;
}
}
//adding the value
int result = converttoint(vec) + converttoint(vec2);
int reversedvalue = reverse(result);
vector<int> otp;
struct ListNode * r1;
for (int i = to_string(reversedvalue).length(); i >= 0; i--) {
otp.push_back(reversedvalue % 10);
r1->val = reversedvalue % 10;
r1 = r1->next;
reversedvalue /= 10;
}
r1->next = NULL;
return r1;
}
};
你可以简单地添加它,因为数字是相反的!(妥善保管行李)
你的错误是什么?
for (int i = 0; i < 3; i++) {
number *= 10;
number += array[i];
}
for (int i = 0; i < array.size(); i++) {
number *= 10;
number += array[i];
}
1 --> 2 --> NULL
3 --> 4 --> 5 --> NULL
4 --> 6 --> 5 --> NULL