leetcode 面试题 02.05 链表求和

news2024/11/25 4:58:46

⭐️ 题目描述

在这里插入图片描述

🌟 leetcode链接:面试题 02.05 链表求和

ps: 首先定义一个头尾指针 headtail,这里的 tail 是方便我们尾插,每次不需要遍历找尾,由于这些数是反向存在的,所以我们直接加起来若大于等于 10 则进位,进位的数字加到下一位的数字和上,需要注意的是,当任意一个链表结束后,另一个链表可能还有余项,还需要检查是否有不为空的链表继续重复上面的操作。还有一种特殊的情况是:5 + 5 = 10 两个链表只有一个数,而且两个链表的 val 相加后是同时都为空,但是进位还有一个 1 所以还要判断这种特殊情况。

代码:

struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){
    struct ListNode* head = NULL;   // 
    struct ListNode* tail = NULL;
    int unit = 0;
    while (l1 && l2) {
        int sum = l1->val + l2->val;
        // 尾插
        struct ListNode* newNode = (struct ListNode*)malloc(sizeof(struct ListNode));
        newNode->val = (sum % 10 + unit) % 10;
        newNode->next = NULL;
        if (head == NULL) {
            head = tail = newNode;
        } else {
            tail->next = newNode;
            tail = newNode;
        }
        // 检查
        if ((sum + unit) >= 10) {
            unit = 1;   // 进位
        } else {
            unit = 0;
        }
        // 迭代
        l1 = l1->next;
        l2 = l2->next;
    }
    // 结束可能会有一个链表还有节点
    struct ListNode* empty = l1;
    struct ListNode* noneEmpty = l2;
    if (l1 != NULL) {
        noneEmpty = l1;
        empty = l2;
    }
    // 遍历当前非空链表
    while (noneEmpty) {
        struct ListNode* newNode = (struct ListNode*)malloc(sizeof(struct ListNode));
        newNode->val = (noneEmpty->val + unit) % 10;
        newNode->next = NULL;
        tail->next = newNode;
        tail = newNode;
        // 检查
        if ((noneEmpty->val + unit) >= 10) {
            unit = 1;   // 进位
        } else {
            unit = 0;
        }
        noneEmpty = noneEmpty->next;
    }
    // 结束可能进位还存在
    if (unit) {
        struct ListNode* newNode = (struct ListNode*)malloc(sizeof(struct ListNode));
        newNode->val = unit;
        newNode->next = NULL;
        tail->next = newNode;
    }

    return head;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/878480.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Kubernetes】Kubernetes的PV和PVC的用法

PV、PVC 前言一、 存储卷1. emptyDir 存储卷1.1 概念1.2 实例 2. hostPath 存储卷2.1 概念2.2 实例 3. nfs共享存储卷 二、PV 和 PVC1. 概念1.1 PV1.2 PVC1.3 PVC 的使用逻辑1.4 创建机制1.5 PV 和 PVC 的生命力周期1.6 创建及销毁 PV 的流程 2. PV 和 PVC 的创建2.1 查看定义2…

PC-3000 Flash、Flash_Extractor、VNR信号的术语和编号 / 软件教程

PC-3000 Flash、Flash_Extractor、VNR信号的术语和编号 / 软件教程 PC-3000 Flash、Flash_Extractor、VNR信号的术语和编号 PC-3000 Flash、Flash_Extractor、VNR信号的术语和编号 许多客户在解决方案库中阅读整体方案时遇到问题。那么,如何正确读取它们并将内存芯片…

FinOps 应用入门指南

入门指南介绍 什么是 FinOps ? FinOps 是一种云成本管理和优化的解决方案,并为组织、企业、团队提供了系统化的方法论,其中每个人都应该对自己的云资源成本负责。 FinOps 是“Finance”和“DevOps”的合成词,强调业务团队和研发…

因果推断(四)断点回归(RD)

因果推断(四)断点回归(RD) 在传统的因果推断方法中,有一种方法可以控制观察到的混杂因素和未观察到的混杂因素,这就是断点回归,因为它只需要观察干预两侧的数据,是否存在明显的断点…

秒杀库存解决方案

电商系统中秒杀是一种常见的业务场景需求,其中核心设计之一就是如何扣减库存。本篇主要分享一些常见库存扣减技术方案,库存扣减设计选择并非一味追求性能更佳,更多的应该考虑根据实际情况来进行架构取舍。在商品购买的过程中,库存…

8.14 ARM

1.练习一 .text 文本段 .global _start 声明一个_start函数入口 _start: _start标签,相当于C语言中函数mov r0,#0x2mov r1,#0x3cmp r0,r1beq stopsubhi r0,r0,r1subcc r1,r1,r0stop: stop标签,相当于C语言中函数b stop 跳转到stop标签下的第一条…

Maven 基础之依赖管理、范围、传递、冲突

文章目录 关于依赖管理坐标和 mvnrepository 网站pom.xml 中"引"包 依赖范围依赖传递依赖冲突 关于依赖管理 坐标和 mvnrepository 网站 在 maven 中通过『坐标』概念来确定一个唯一确定的 jar 包。坐标的组成部分有&#xff1a; 元素说明<groupId>定义当前…

2023国赛数学建模思路 - 复盘:光照强度计算的优化模型

文章目录 0 赛题思路1 问题要求2 假设约定3 符号约定4 建立模型5 模型求解6 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 问题要求 现在已知一个教室长为15米&#xff0c;宽为12米&…

HTB-Keeper

HTB-Keeper 信息收集80端口 lnorgaardroot 信息收集 80端口 80主页给了一个跳转的链接 跟随链接后到了一个登陆界面。 尝试搜索默认密码。 通过账号root:password登录。不知道为什么我登陆了两次才成功。 通过搜索在Admin->Users->Select里面发现了用户信息。 lno…

安全 1自测

常见对称加密算法&#xff1a; DES&#xff08;Data Encryption Standard&#xff09;&#xff1a;数据加密标准&#xff0c;速度较快&#xff0c;适用于加密大量数据的场合&#xff1b; 3DES&#xff08;Triple DES&#xff09;&#xff1a;是基于DES&#xff0c;对一块数据用…

HashMap源码 学习日志

我们先看一下默认的 HashMap的设置 什么是 加载因子&#xff1f; HashMap的底层是哈希表&#xff0c;是存储键值对的结构类型&#xff0c;它需要通过一定的计算才可以确定数据在哈希表中的存储位置&#xff1a; static final int hash(Object key) {int h;return (key nul…

Tree相关

1.树相关题目 1.1 二叉树的中序遍历&#xff08;简单&#xff09;&#xff1a;递归 题目&#xff1a;使用中序遍历二叉树 思想&#xff1a;按照访问左子树——根节点——右子树的方式遍历这棵树&#xff0c;而在访问左子树或者右子树的时候我们按照同样的方式遍历&#xff0…

如何选择适合企业的文档在线管理系统?

在当今数字化时代&#xff0c;企业文档承载了大量的信息和数据&#xff0c;因此选择适合企业的文档在线管理系统至关重要。一个合适的文档管理系统可以提高工作效率、加强信息安全和团队协作能力&#xff0c;下面将介绍如何选择适合企业的文档在线管理系统。 1. 功能需求 首先…

全网小说下载器,只需书名,一键下载(Python爬虫+tkinter 实现)小白实战案例系统教学!

大家好&#xff0c;我是小曼呐 前言 ttkbootstrap是一个基于Python的开源库&#xff0c;用于创建漂亮且交互式的GUI应用程序。它是在Tkinter框架之上构建的&#xff0c;提供了一系列的Widget组件和样式&#xff0c;可以帮助开发者快速构建现代化的用户界面。 今天做的是这个…

JavaScript如何执行语句

目录 语法/词法分析 预编译 解释执行 预编译什么时候发生 js运行三步曲 预编译前奏 预编译步骤 巩固基础练习 语法/词法分析 按语句块的粒度解析成抽象语法树 ,分析该js脚本代码块的语法是否正确&#xff0c;如果出现不正确&#xff0c;则向外抛出一个语法错误&#x…

centos7 部署kubernetes(带自动部署脚本)

目录 一、实验规划 1、规划表 2、安装前宿主机检查 1.配置主机名 2.制作ssh免密&#xff08;VM1中执行&#xff09; 3.修改hosts 文件 4. 修改内核相关参数 5.加载模块 6. 清空iptables、关闭防火墙、关闭交换空间、禁用selinux 7. 安装ipvs与时钟同步 8.配置docker的…

实现两个table一起滚动的效果

效果 代码 css相关 重点是.head-box .body-box-right .body-box-left 三个类的设置 .box {display: flex;justify-content: flex-start;}table {width: 500px;}tr,th {display: flex;justify-content: space-around;align-content: space-around;height: 50px;}td {width: 8…

Vue 使用 vite 创建项目

vite 是新一代前端构建工具&#xff0c;和 webpack 类似。 vite 的启动速度更快。在开发环境中&#xff0c;不需要打包就可以直接运行。 vite 的更新速度更快。当修改内容后&#xff0c;不需要刷新浏览器&#xff0c;页面就会实时更新。 vite 完全是按需编译。它只会编译需要…

(二分查找) 11. 旋转数组的最小数字 ——【Leetcode每日一题】

❓剑指 Offer 11. 旋转数组的最小数字 难度&#xff1a;简单 把一个数组最开始的若干个元素搬到数组的末尾&#xff0c;我们称之为数组的旋转。 给你一个可能存在 重复 元素值的数组 numbers &#xff0c;它原来是一个升序排列的数组&#xff0c;并按上述情形进行了一次旋转…

LeetCode 37题:解数独

题目 编写一个程序&#xff0c;通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&#xff1a; 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请参考示例图&#xff09; 数独…