当前位置:   article > 正文

Leetcode刷题笔记题解(C++):BM11 链表相加(二)

Leetcode刷题笔记题解(C++):BM11 链表相加(二)

思路:先对两个链表进行反转,反转求和注意进位运算,求和完成之后再进行反转得到结果

  1. /**
  2. * struct ListNode {
  3. * int val;
  4. * struct ListNode *next;
  5. * ListNode(int x) : val(x), next(nullptr) {}
  6. * };
  7. */
  8. #include <cstddef>
  9. class Solution {
  10. public:
  11. /**
  12. * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
  13. *
  14. *
  15. * @param head1 ListNode类
  16. * @param head2 ListNode类
  17. * @return ListNode类
  18. */
  19. ListNode* addInList(ListNode* head1, ListNode* head2) {
  20. // write code here
  21. ListNode* phead1 = ReverseList(head1);
  22. ListNode* phead2 = ReverseList(head2);
  23. int i= 0;
  24. ListNode* result = new ListNode(0);
  25. ListNode* ret = result;
  26. while(phead2||phead1||i>0){
  27. int val1 = phead1?phead1->val:0;
  28. int val2 = phead2?phead2->val:0;
  29. int sum = val1 + val2 + i;
  30. i = sum/10;
  31. sum = sum%10;
  32. ret->next = new ListNode(sum);
  33. ret = ret->next;
  34. if(phead1) phead1 = phead1->next;
  35. if(phead2) phead2 = phead2->next;
  36. }
  37. return ReverseList(result->next);
  38. }
  39. ListNode* ReverseList(ListNode* head){
  40. ListNode* ret = nullptr;
  41. ListNode* temp = nullptr;
  42. while(head){
  43. temp = head->next;
  44. head->next = ret;
  45. ret = head;
  46. head = temp;
  47. }
  48. return ret;
  49. }
  50. };

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/799412
推荐阅读
相关标签
  

闽ICP备14008679号