首页 > 其他 > 详细

LeetCode - 两数相加(No.2)

时间:2019-12-28 21:37:44      阅读:87      评论:0      收藏:0      [点我收藏+]

2 - 两数相加

  • date : Dec.28th, 2019
  • platform : windows

thinking

raw method for problem solving.

code

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */


struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){
    struct ListNode* p1 = l1;
  struct ListNode* p2 = l2;
  struct ListNode* l = (struct ListNode*)malloc(sizeof(struct ListNode));
  struct ListNode* p = l;
  int jw = 0;

  /* 先构建链表,计算 */
  while(p1!=NULL || p2!=NULL){
    if (p1!=NULL && p2!=NULL){
      p->next = (struct ListNode*)malloc(sizeof(struct ListNode));
      p = p->next;
      p->val = p1->val + p2->val;
      p1 = p1->next;
      p2 = p2->next;
    }
    else if (p1 != NULL){
      p->next = (struct ListNode*)malloc(sizeof(struct ListNode));
      p = p->next;
      p->val = p1->val;
      p1 = p1->next;
    }
    else if (p2 != NULL){
      p->next = (struct ListNode*)malloc(sizeof(struct ListNode));
      p = p->next;
      p->val = p2->val;
      p2 = p2->next;
    }
  }
  p->next = NULL;

  /* 进位处理 */
  p = l;
  while (p->next != NULL) {
    p->next->val += jw;
    if (p->next->val >= 10) {
      p->next->val -= 10;
      jw = 1;
    } else {
      jw = 0;
    }
    p = p->next;
  }

  /* 处理最高位进位的情况 */
  if (jw == 1)
  {
    jw = 0;
    p->next = (struct ListNode*)malloc(sizeof(struct ListNode));
    p = p->next;
    p->val = 1;
    p->next = NULL;
  }

  return l->next;
}

LeetCode - 两数相加(No.2)

原文:https://www.cnblogs.com/litun/p/12112941.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!