zoukankan      html  css  js  c++  java
  • 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

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        int  listLen(ListNode* head)
        {
            int res = 0;
            while(head!=NULL){
                res++;
                head = head->next;
            }
            return res;
        }
        ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
            int len1 = listLen(l1);
            int len2 = listLen(l2);
            
            ListNode* head1 = len1>len2 ? l1:l2;
            ListNode* head2 = len1>len2 ? l2:l1;
            ListNode* head = head1;
            int c = 0;
            ListNode* pre = NULL;
            while(head1!=NULL && head2!=0){
                int tmp = (head1->val + head2->val + c )%10;
                c = (head1->val + head2->val + c )/10;
                head1->val = tmp;
                pre = head1;
                head1 = head1->next;
                head2 = head2->next;
                cout<<"tmp = "<<tmp<<",c="<<c<<endl;
            }
            while(head1!=NULL){
               
                int tmp = (head1->val + c)%10;
                c = (head1->val + c)/10;
                head1->val = tmp;
                pre = head1;
                head1 = head1->next;
                 cout<<"tmp = "<<tmp<<",c="<<c<<endl;
            }
            
            while(head2!=NULL){
                
                int tmp = (head2->val + c)%10;
                c = (head2->val + c)/10;
                head2->val = tmp;
                pre = head2;
                head2 = head2->next;
                cout<<"tmp = "<<tmp<<",c="<<c<<endl;
            }
            
            if(c!=0){
                ListNode *node = new ListNode(c);
                pre->next = node;
            }
            return head;
        }
    };
  • 相关阅读:
    Kotlin学习系列(三)
    获取Android设备标识符
    Kotlin学习系列(二)
    ijkplayer实现IMediaDataSource
    Fresco添加HTTP请求头
    Kotlin学习系列(一)
    完整的Android MVP开发之旅
    Marshmallow权限使用
    APP设计与开发(ui篇)
    下载Android源码
  • 原文地址:https://www.cnblogs.com/zengzy/p/5002079.html
Copyright © 2011-2022 走看看