zoukankan      html  css  js  c++  java
  • 一起刷LeetCode2-Add Two Numbers

      今天看不进去论文,也学不进去新技术,于是先把题刷了,一会补别的。

    -----------------------------------------------------我才不是分割线-------------------------------------------------

    Add Two Numbers

    You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order

    and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

    Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
    Output: 7 -> 0 -> 8

    【题意】:就是给你两个链表,链表内的内容为一个多位数的逆序,比如342就表示为(2 -> 4 -> 3),现在让你算这两个多位数的和,

    同时用相同的方法表示出来,也就是将和的逆序用链表表示出来。

    【心路历程】看到题目一开始的想法就是考查模拟加法+链表操作的题,还算简单,链表操作就是一个尾部加链表的方法。

    于是开始码代码,写完一交发现出现RE (TAT)。错误的样例为[0],[0]。想了半天不知道哪里错了。。。

    后来发现我head指针没分配空间,额额额,改完一交,AC (^ ^)

    ------------------------------------------------------------------------------------------------------------------------

    代码如下:

     1 /**
     2  * Definition for singly-linked list.
     3  * struct ListNode {
     4  *     int val;
     5  *     struct ListNode *next;
     6  * };
     7  */
     8 struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
     9     struct ListNode * res = (struct ListNode *)malloc(sizeof(struct ListNode));
    10     struct ListNode * ans = NULL;
    11     int judge = 0;
    12     int save = 0;
    13     int add1,add2,sum;
    14     if(l1 == NULL && l2 == NULL) return NULL;
    15     while(l1 != NULL || l2 != NULL) {
    16         if(l1 == NULL) {
    17             add1 = 0;
    18             add2 = l2->val;
    19             l2 = l2->next;
    20         }else if(l2 == NULL){
    21             add1 = l1 ->val;
    22             add2 = 0;
    23             l1 = l1->next;
    24         }else {
    25             add1 = l1->val;
    26             add2 = l2->val;
    27             l1 = l1->next;
    28             l2 = l2->next;
    29         }
    30         sum = add1 + add2 + save;
    31         save = sum / 10;
    32         struct ListNode * temp = (struct ListNode *)malloc(sizeof(struct ListNode));
    33         temp->val = sum % 10;
    34         temp->next = NULL;
    35         res->next = temp;
    36         if(judge == 0) {
    37             ans = temp;
    38             judge = 1;
    39         }
    40         res = res->next;
    41     }
    42     if(save){
    43         struct ListNode * temp = (struct ListNode *)malloc(sizeof(struct ListNode));
    44         temp->val = save;
    45         temp->next = NULL;
    46         res->next = temp;
    47     }
    48     return ans;
    49 }
  • 相关阅读:
    linux centos 常用命令(需掌握)
    centos轻松搭建NFS
    Centos6.1在yum安装软件的时候,居然报错了,如何解决
    安装好Centos后,需要做的几件事情。
    使用scp命令传输文件
    批量删除文件或者批量修改文件
    Centos7搭建常用的LNMP架构
    python实现自动抠名字签名,比PS还快
    inotify软件实现实时同步,ssh-key 秘钥连接方式,saltstack实战批量管理Linux,expect批量分发秘钥
    Cisco 路由器配置OSPF 动态路由 (开放式最短路径优先)
  • 原文地址:https://www.cnblogs.com/LeeZz/p/4488996.html
Copyright © 2011-2022 走看看