zoukankan      html  css  js  c++  java
  • LeetCode第二题

    题目描述:

    You are given two non-empty linked lists representing two non-negative integers. 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.

    You may assume the two numbers do not contain any leading zero, except the number 0 itself.

    题目大致描述:

    提供两个非空非负数的链表,将链表数字相加,返回新的链表。

    解题思路:

    1:为两个链表的数字求和得到新的数加入链表

    2:数字超过10时进位

    代码块(c#实现):

    第一次提交代码(失败):

    public ListNode AddTwoNumbers(ListNode l1, ListNode l2) {
    ListNode answer = new ListNode(0);
    ListNode result = answer;
    int index = 0;
    while(l1 != null || l2 != null){
    int val1 = l1 != null?l1.val:0;
    int val2 = l2 != null?l2.val:0;
    int sum = val1+val2+index;
    index = sum/10;
    result.next = new ListNode(sum%10);
    result = result.next;
    l1 = l1.next;
    l2 = l2.next;
    }
    if(index > 0) result.next = new ListNode(index);
    return answer.next;
    }

    修改部分(提交成功):

    if(l1 != null)l1 = l1.next;
    if(l2 != null)l2 = l2.next;

    心得:

    1:为什么给val1、val2赋值时要判断是否为null?

    2:如何进位和求得当前位置的值:在思考这个题目的时候,很容易就想到了用取余数来得到当前位的值,但是一时间并没有想到如何得到进位后的数值,想过用除法,但因为想的太狭隘,并没有很好的解决方法。

    3:最后的一个条件判断?是用来判断当两个链表最后一个数字都已经加完时,是否有进位。

    4:if和while的区别

    声明:此为个人的学习看法,希望有其他看法的前辈,能够多多提点指教

  • 相关阅读:
    是河南大学的悲哀???
    装完manjaro先要卸载
    技术博客
    VIM从入门到中级教程
    HTTP中GET与POST的区别
    AngularJS 拦截器实现全局$http请求loading效果
    angular指令监听ng-repeat渲染完成后执行自定义事件方法
    icheck如何修改样式大小
    Sublime text3 代码格式化插件
    代理模式小试
  • 原文地址:https://www.cnblogs.com/joyandjoys/p/8533896.html
Copyright © 2011-2022 走看看