补充一下,我说的是 第二题,这是我的C++代码:
/**
* 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) {
auto carry = 0;
ListNode* p1 = l1;
ListNode* p2 = l2;
ListNode* last = l1;
while (p1 != nullptr && p2 != nullptr) {
auto v = p1->val + p2->val + carry;
carry = v/10;
p1->val = v%10;
last = p1;
p1 = p1->next;
p2 = p2->next;
}
ListNode* left = p1 != nullptr ? p1 : p2;
last->next = left;
while (left != nullptr) {
auto v = left->val + carry;
carry = v/10;
left->val = v%10;
last = left;
left = left->next;
}
if (carry > 0) {
last->next = l2;
l2->val = carry;
l2->next = nullptr;
}
return l1;
}
};
为了跑快一点,我还重用了输入参数的内存,用来生产输出的链表。
我这在C++提交里面算是快的了。
不是我对Java的运行速度有偏见,我只是想弄清楚,为什么大多数 Java 提交都几乎比所有的 C/C++ 快。
到底快的原因是什么?