Add Two Numbers 把两个以链表形式表示的数相加 @LeetCode

亿图机床采集数据 这个数控系统的英文名是HUST,在台湾知名度还可以,但大陆这边我做这么多年项目也只接触过屈指可数的几次,可见市场占有率并不大,联网采集不复杂。 阅读详情

思路:

新建结果链表,用3个指针处理,注意carry

package Level3;

import Utility.ListNode;

/**
 * 
 * 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
 */
public class S2 {

	public static void main(String[] args) {
		ListNode l1 = new ListNode(2);
		ListNode x2 = new ListNode(4);
		ListNode x3 = new ListNode(3);
		l1.next = x2;
		x2.next = x3;
		
		ListNode l2 = new ListNode(5);
		ListNode y2 = new ListNode(6);
		ListNode y3 = new ListNode(4);
		l2.next = y2;
		y2.next = y3;
		
		ListNode ret = addTwoNumbers(l1, l2);
		ret.print();
	}
	
	public static ListNode addTwoNumbers(ListNode l1, ListNode l2) {
		int carry = 0;			// 进位
		ListNode p1 = l1;		// 标记l1的位置
		ListNode p2 = l2;		// 标记l2的位置
		ListNode ret = null;	// 返回链表
		ListNode p3 = ret;	// 标记返回链表的位置
		
		// 处理相同长度部分
		while(p1!=null && p2!=null){
			int add = p1.val + p2.val + carry;
			if(add < 10){
				carry = 0;
			}else{
				add -= 10;
				carry = 1;
			}
			ListNode n = new ListNode(add);
			if(ret == null){
				ret = n;
				p3 = n;
			}else{
				p3.next = n;
				p3 = n;
			}
			p1 = p1.next;
			p2 = p2.next;
		}

		// 处理不同长度部分
		while(p1 != null){
			int add = p1.val + carry;
			if(add < 10){
				carry = 0;
			}else{
				add -= 10;
				carry = 1;
			}
			ListNode n = new ListNode(add);
			p3.next = n;
			p3 = n;
			p1 = p1.next;
		}
		
		while(p2 != null){
			int add = p2.val + carry;
			if(add < 10){
				carry = 0;
			}else{
				add -= 10;
				carry = 1;
			}
			ListNode n = new ListNode(add);
			p3.next = n;
			p3 = n;
			p2 = p2.next;
		}
		
		// 处理最后可能会出现的进位
		if(p1==null && p2==null && carry!=0){
			ListNode n = new ListNode(carry);
			p3.next = n;
		}
		
		return ret;
	}

}


同合并链表题

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode cur1 = l1, cur2 = l2;
        ListNode dummy = new ListNode(0);
        ListNode cur = dummy;
        int carry = 0;
        while(cur1 != null && cur2 != null) {
            int sum = cur1.val + cur2.val + carry;
            if(sum >= 10) {
                carry = 1;
                cur.next = new ListNode(sum-10);
            } else {
                carry = 0;
                cur.next = new ListNode(sum);
            }
            cur1 = cur1.next;
            cur2 = cur2.next;
            cur = cur.next;
        }
        
        while(cur1 != null) {
            int sum = cur1.val + carry;
            if(sum >= 10) {
                carry = 1;
                cur.next = new ListNode(sum-10);
            } else {
                carry = 0;
                cur.next = new ListNode(sum);
            }
            cur1 = cur1.next;
            cur = cur.next;
        }
        
        while(cur2 != null) {
            int sum = cur2.val + carry;
            if(sum >= 10) {
                carry = 1;
                cur.next = new ListNode(sum-10);
            } else {
                carry = 0;
                cur.next = new ListNode(sum);
            }
            cur2 = cur2.next;
            cur = cur.next;
        }
        
        if(carry == 1) {
            cur.next = new ListNode(1);
        }
        
        return dummy.next;
    }
}






【FPGA教程案例37】通信案例7——基于FPGA的FFT,IFFT傅里叶变换和逆变换 关于FFT和IFFT的相关描述,在上一课程我们已经有所了解,本课程不再重复。在上一课程,我们初步掌握了如何通过FFT对输入信号进行频谱分析,在本课程,我们将学习如何通过FPGA实现FFT和IFFT得到初始信号的过程。关于FFT的IP核配置,和上一课程相同。下面直接介绍其verilog调用过程。我们可以看到,IFFT的配置非常简单,在FFT的基础上,只需要将该参数的最后一位改为0,就可以实现IFFT变化。下面我们通过testbench文件,同时调用FFT和IFFT实现信号的傅里叶变换和逆变换。...... 阅读详情

相关推荐

CTF命令执行绕过实战:从空格过滤到无回显外带的7种核心姿势

命令执行漏洞是Web安全中的常见高危漏洞,其核心原理在于应用程序未对用户输入进行充分过滤,导致攻击者能够注入并执行系统命令。在真实环境中,安全防护措施(如WAF、输入过滤函数)普遍存在,因此漏洞利用的关键技术在于“绕过”这些过滤机制。理解过滤器的运作逻辑(如黑名单、白名单、转义、长度限制)是成功绕过的前提。通过系统学习**空格绕过**、**命令黑名单绕过**、**编码混淆**等基础技巧,并结合**无回显外带**、**反弹Shell**等高级利用链,安全研究人员能够有效应对复杂防护场景。本文以CTFshow

weixin_29315091的博客 370

给定两个链表表示的整数,编写函数对这两个整数求和,并用链表形式返回结果。

// Definition for singly-linked list. // class ListNode { // int val; // ListNode next; // ListNode(int x) { val = x; } // } class Solution { public ListNode addTwoNumb...

binbigdata的博客 3387

0/1背包问题:从暴力递归到动态规划详解

题目: 有一组数量为 n 个物品,每个物品都有重量w 和价值v 给定一个背包bag,背包装的物品不能超过背包最大载重容量返回背包bag 能装下的最大价值1. 物品的重量和价值:2. 背包的容量:暴力解法的核心是递归,通过逐一决策每个物品是否放入背包,最终找到最优解。状态定义:递归逻辑:递归终止条件: 动态规划解法 递归的暴力解法有重复子问题,导致了大量的重复计算。为了解决这个问题,我们可以使用动态规划来优化。状态定义:状态转移:边界条件: 测试方法 示例解析 假设:我们希望找到在容量为

Mr.Ayao's blog 2066

lintcode 756. 两数相乘

给出两个链表形式表示的数字,写一个函数得到这两个链表相乘乘积。 样例 样例 1: 输入:9->4->6->null,8->4->null 输出:79464 解释:946*84=79464 样例 2: 输入:3->2->1->null,1->2->null 输出:3852 解释:321*12=3852 /** * Definitio...

sinb妃的博客 346

从硬件拆解到图像生成:一次搞懂MRI设备(主磁体、梯度线圈、射频系统)是如何协同工作的

本文深入解析MRI设备的三大核心系统——主磁体、梯度线圈和射频系统如何协同工作,实现从量子现象到诊断图像的转化。通过详细的技术参数和临床案例,揭示磁共振成像(MRI)在医疗图像处理中的精密工程原理和最新技术突破,帮助读者全面理解这一现代医学影像技术的运作机制。

weixin_33734785的博客 549

R语言分类变量的统计描述

三篇介绍了连续变量的统计描述的R语言相关函数,计算数值的相关统计指标。本文介绍分类变量的统计描述及如何在R语言中实现。 不同于连续变量,分类变量的统计描述主要是汇总分类变量各类别例数及百分比。 1、table()函数 ...

zsc943290710的博客 1万+

链式A+B--有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。 给定两个链表ListNode* A,Li

题目描述 有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。 给定两个链表ListNode*A,ListNode*B,请返回A+B的结果(ListNode*)。 测试样例: {1,2,3},{3,2,1} 返回:{4,4,4} 解题思路: 首先判...

Light丶Long的博客 2203

DataHub 架构设计与核心工作原理

DataHub 是一个第三代数据目录系统,专为现代数据栈设计,支持数据发现、协作、治理和端到端可观测性。其架构采用模型优先的设计理念,注重不同工具和系统之间的互操作性。

北斗云的博客 1224

两数相乘

给出两个链表形式表示的数字,写一个函数得到这两个链表相乘乘积。 样例 样例 1: 输入:9->4->6->null,8->4->null 输出:79464 解释:946*84=79464 样例 2: 输入:3->2->1->null,1->2->null 输出:3852 解释:321*12=3852 /** *...

weixin_41791402的博客 1486

如何使用 Ansys OptiSlang 同时运行多个参数化设计研究

了解如何通过使用 OptiSLang 同时运行多个参数化设计研究来提高工作效率。

jkh920184196的博客 2383

5QI(5G QoS Identifier)

此外,5QI与网络切片(Network Slicing)密切相关,网络切片允许网络运营商在物理网络内部创建虚拟网络,为不同的客户和用例提供定制化服务和QoS。5QI(5G QoS Identifier)在5G网络中用于标识不同的服务质量要求,它允许网络对不同的数据流进行优先级划分和资源分配。:5QI的实施需要对5G网络的QoS参数有深入的理解,包括延迟、吞吐量、数据包丢失率等,这对技术人员提出了较高的要求。不是所有的5G设备都支持5QI的全部功能,这可能会限制5QI应用的广泛性。

记录有价值的内容 6533

python求两个链表组成的数字的和

给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -&gt; 4 -&gt; 3) + (5 -&gt; 6 -&gt; 4) 输出:7 -&gt; 0 -&gt; 8 原因:342 + 465 = 807代码实现:# Definition for singl...

u013230391的博客 1024

自主探索型AI Agent:LLM驱动的好奇心与学习动机

随着人工智能技术的飞速发展,传统的AI系统往往依赖于预设的规则和大量的标注数据,其自主学习和适应新环境的能力有限。自主探索型AI Agent旨在打破这种局限,能够在复杂、未知的环境中自主地进行探索、学习和决策。本文的目的是深入研究在大语言模型(LLM)驱动下,AI Agent如何产生好奇心和学习动机,以及如何实现自主探索的能力。范围涵盖了核心概念、算法原理、数学模型、项目实战、应用场景等多个方面,为读者提供一个全面的技术视角。本文将按照以下结构进行阐述:首先介绍相关背景知识,包括目的、读者和文档结构;

大模型应用工坊 997

给定两个用链表表示的整数,每个节点包含一个数位。

给定两个用链表表示的整数,每个节点包含一个数位。 这些数位是反向存放的,也就是个位排在链表首部。 编写函数对这两个整数求和,并用链表形式返回结果。 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { .

疯狂小羊的博客 2707

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

leetcode——Add Two Numbers 两个链表表示的正整数对其求和(AC)

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 link

axiaochong的专栏 1456

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

给出两个链表形式表示的数字,写一个函数得到这两个链表相乘乘积

package com.lxg.algorithm; import java.util.Arrays; public class Solution06 { /** * @param l1: the first list * @param l2: the second list * @return: the product list of l1 and l2 */ public static long multiplyLists(ListNode l

weixin_44296113的博客 347

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【Leetcode刷题篇】(十)两数相加(链表表示)

题目: https://leetcode-cn.com/problems/add-two-numbers/ 给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0开头。 示例: 输入:(...

小川儿的博客 359

常见面试算法题:给定两个非空链表来表示两个非负整数

代码如下:

建设美丽祖国 5953

c语言给定两个用链表表示的整数,救命啊!!!两个链表的程序.

该楼层疑似违规已被系统折叠隐藏此楼查看此楼#include#include#define max 10000typedef struct{int data;int cursor;}Component,StaticList[max];void Print(Component space[],int *av);void Choose(int choice,Component space[],int ...

weixin_34395361的博客 424

leetcode-面试题2.05链表求和

题目 给定两个用链表表示的整数,每个节点包含一个数位。 这些数位是反向存放的,也就是个位排在链表首部。 编写函数对这两个整数求和,并用链表形式返回结果。 示例: 输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295 输出:2 -> 1 -> 9,即912 进阶:假设这些数位是正向存放的,请再做一遍。 示例: 输入:(6 -&gt...

qq_41603639的博客 745

Leetcode刷题指南- 链表两数相乘(756)

文章目录1)题目链表节点计数要求:样例:2)思路3)代码普通方法: 1)题目 链表节点计数 要求: 计算链表中有多少个节点。 样例: 样例 1: 输入: 1->3->5->null 输出: 3 样例解释: 返回链表中结点个数,也就是链表的长度. 样例 2: 输入: null 输出: 0 样例解释: 空链表长度为0 2)思路 从头节点开始遍历,不为空,计数加1 3)代...

qq_39751437的博客 1056

用单向链表表示十进制整数,求两个正整数的和。如,1234+34=1268,注意单项链表的方向从前向后,不允许使用其他数据结构。

遵循 http://creativecommons.org/licenses/by-sa/4.0/版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.youkuaiyun.com/Thomas0713/article/details/83052257 class SingleNode(object): """ 单向链表节点 """ # i...

stujike123456的博客 916

链式A+B

题目描述 有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。 给定两个链表ListNode* A,ListNode* B,请返回A+B的结果(ListNode*)。 测试样例: {1,2,3},{3,2,1} 返回:{4,4,4} public class Plus { //链式A

feige1990的专栏 838

链式A+B有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。 给定两个链表ListNode* A,ListN

有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。 给定两个链表ListNode* A,ListNode* B,请返回A+B的结果(ListNode*)。 测试样例: {1,2,3},{3,2,1} 返回:{4,4,4} package 链表

woshieer的博客 1051
上一篇: String to Integer (atoi) 转换string为整数@LeetCode
下一篇: 删数问题
chiiis
博客等级 码龄14年 422粉丝 429原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值