此代码给了我运行时错误。如何解决此代码?

问题描述 投票:0回答:1
/**
 * 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) {}
 * };
 */

这是一个leetcode问题,它的开始是这样的。您将获得两个表示两个非负整数的非空链表。这些数字以相反的顺序存储,并且它们的每个节点都包含一个数字。将两个数字相加,然后将其作为链接列表返回。

您可能会假设两个数字除了数字0本身以外都不包含任何前导零。

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;
    }
}; 
c++ runtime-error buffer-overflow
1个回答
0
投票

converttoint功能中,我不明白您为什么拥有:

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
© www.soinside.com 2019 - 2024. All rights reserved.