首页 > 其他分享 >leetcode 2.两数相加

leetcode 2.两数相加

时间:2023-12-31 13:44:43浏览次数:49  
标签:ListNode 相加 链表 l2 result l1 carry leetcode 两数

leetcode

第二题:两数相加

以链表为载体模仿加法进位,同时遍历两个链表,逐位计算它们的和,并与当前位置的进位值相加。如果两个链表的长度不同,则可以认为长度短的链表的后面有若干个 0 。如果链表遍历结束后,有 carry>0,还需要在答案链表的后面附加一个节点,节点的值为 carry。

易错点:1.每个数字的初始赋值xy,如果短的链表走完了要考虑赋零。

​ 2.result结点是遍历两个链表的结果值,但返回的应该是头结点的下一个结点,用于测试和遍历。

时间复杂度:O(max⁡(m,n)),其中 m和 n 分别为两个链表的长度。我们要遍历两个链表的全部位置,而处理每个位置只需要 O(1)的时间。

空间复杂度:O(1)。

 public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode result_head = new ListNode(0);
        ListNode result = result_head;
        int carry = 0;
        while(l1 != null || l2 !=null){
			int x = l1 == null ? 0:l1.val;
            int y = l2 == null? 0: l2.val;
            int sum = x + y +carry;
            carry = sum / 10;
            ListNode temp = new ListNode(sum % 10);
            result.next = temp;
            result = result.next;
            if (l1 != null) l1 = l1.next;
            if (l2 != null) l2 = l2.next;
        }
        if (carry != 0) {
            ListNode temp = new ListNode(carry);
            result.next = temp;
        }
        return result_head.next;

    }

标签:ListNode,相加,链表,l2,result,l1,carry,leetcode,两数
From: https://www.cnblogs.com/ldy20020324/p/17937454

相关文章

  • leetcode 1.两数之和
    leetcode第一题:两数之和1.暴力枚举:最容易想到的方法是枚举数组中的每一个数x,寻找数组中是否存在target-x。当我们使用遍历整个数组的方式寻找target-x时,需要注意到每一个位于x之前的元素都已经和x匹配过,因此不需要再进行匹配。而每一个元素不能被使用两次,所以我们......
  • LeetCode 刷题集锦
    目录1.  1108.IP地址无效化2.  1093.大样本统计3.  888.公平的糖果交换4.  445.两数相加II 1.  1108.IP地址无效化题目链接1108.IP地址无效化题目描述解题思路替换. 为[.], 如果使用 Java 最好使用 stringBuilder, 而且可以使用 string 封装好的 ......
  • leetcode 2706 购买两块巧克力
    题目: 2706购买两块巧克力思路:找两个最小值。分情况讨论 代码classSolution:defbuyChoco(self,prices:List[int],money:int)->int:#遍历一遍,找2个最小值#找一个最小值我们都会。#找次小值,就分两种情况,假设minPrice是最小......
  • 在不使用内置函数和中间变量的情况交换数字LeetCode力扣题解面试题16.01
    #异或法#Kotlin```KotlinclassSolution{  funswapNumbers(numbers:IntArray):IntArray{    numbers[0]=numbers[0]xornumbers[1]    numbers[1]=numbers[1]xornumbers[0]    numbers[0]=numbers[0]xor......
  • [LeetCode] 1578. Minimum Time to Make Rope Colorful
    Alicehasnballoonsarrangedonarope.Youaregivena0-indexedstringcolorswherecolors[i]isthecoloroftheithballoon.Alicewantstheropetobecolorful.Shedoesnotwanttwoconsecutiveballoonstobeofthesamecolor,sosheasksBobfor......
  • [LeetCode Hot 100] LeetCode102. 二叉树的层序遍历
    题目描述思路方法一:递归/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval){this.val=val;}*TreeNode(intval,TreeNodelef......
  • [LeetCode Hot 100] LeetCode543. 二叉树的直径
    题目描述思路所谓二叉树的直径,就是左右子树的最大深度之和。方法一:/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval){this.val=va......
  • [LeetCode Hot 100] LeetCode104. 二叉树的最大深度
    题目描述思路熟练掌握二叉树的遍历算法方法一:层序遍历(迭代)+计数/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval){this.val=val;......
  • [LeetCode Hot 100] LeetCode110. 平衡二叉树
    题目描述思路LeetCode104.二叉树的最大深度变种方法一:后序遍历(递归、dfs)/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intval){this.......
  • [LeetCode Hot 100] LeetCode111. 二叉树的最小深度
    题目描述思路二叉树的最小深度就是第一个叶子节点所在的层数方法一:前序遍历(递归、dfs)/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(){}*TreeNode(intva......