码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode - 两数相加(No.2)

时间:2019-12-28 21:14:04      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:ini   处理   numbers   nod   pre   ==   val   number   add   

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)

标签:ini   处理   numbers   nod   pre   ==   val   number   add   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!