zoukankan      html  css  js  c++  java
  • LeetCode 第二题两数相加

    题目:

    给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

    请你将两个数相加,并以相同形式返回一个表示和的链表。

    你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

    例子

    链表l1    : 4-->5-->6-->7-->8-->8

    链表l2    : 2-->9-->2-->9

    得到链表 : 6-->4-->9-->6-->9-->8

    思路:就是链表简单的相加如同循环一样; 当时以为得到的链表时反序的,本以为的答案  8-->9-->6-->9-->4-->6

    复习下数据结构链表:

    别人家的孩子答案:

        public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
            // 设置空节点首先,最终的添加数的方法
            ListNode head = null, tail = null;
            // 这是近位数
            int carry = 0;
            // 设置循环,如果双表都位空时说明已经结束了
            while (l1 != null || l2 != null) {
                // 双位运算符,说如果l1不等是空的话那他就是l1值如果位空那就是0
                int n1 = l1 != null ? l1.val : 0;
                // 双位运算符判断
                int n2 = l2 != null ? l2.val : 0;
                // 赋值技计算里面的内容
                int sum = n1 + n2 + carry;
                //判断下如果头为空和不为空判断,添加数据
                if (head == null) {
                    head = tail = new ListNode(sum % 10);
                } else {
                    tail.next = new ListNode(sum % 10);
                }
                //取10位上的值
                carry = sum / 10;
                //如同循环i++,
                if (l1 != null) {
                    l1 = l1.next;
                }
                if (l2 != null) {
                    l2 = l2.next;
                }
    
            }
            // 这是为了如果双表都完成了没有值了但是还有进位值的时候要把进位值放到里面
            if (carry > 0) {
                tail.next = new ListNode(carry);
            }
    
            return head;
    
        }
    }
    
    class ListNode {
        int val;
        ListNode next;
    
        ListNode() {
        }
    
        ListNode(int val) {
            this.val = val;
        }
    
        ListNode(int val, ListNode next) {
            this.val = val;
            this.next = next;
        }
    }
  • 相关阅读:
    LaunchScreen.storyboard 换了图片 不能更改过来 解决方案
    iOS Google 地图 集成详解
    Mac下 使用git clone 代码慢解决方案
    iOS 函数式编程
    iOS [self class] 、 [self superclass]、 [super class] 、[super superclass] 几种情况对比
    iOS 链式编程-Block 作为放回值
    iOS block的变量捕获(capture)
    iOS Block本质探究
    iOS 读写操作 处理 pthread_rwlock dispatch_barrier_async
    iOS atomic 和 nonatomic 区别
  • 原文地址:https://www.cnblogs.com/wanghlblog/p/14487987.html
Copyright © 2011-2022 走看看