OJ05:989. 数组形式的整数加法
目录
- 题目
- 思路分析
- 代码展示
题目
整数的 数组形式 num 是按照从左到右的顺序表示其数字的数组。
- 例如,对于 num = 1321 ,数组形式是 [1,3,2,1] 。
给定 num ,整数的 数组形式 ,和整数 k ,返回 整数 num + k 的 数组形式 。
示例 1:
输入:num = [1,2,0,0], k = 34
输出:[1,2,3,4]
解释:1200 + 34 = 1234
示例 2:
输入:num = [2,7,4], k = 181
输出:[4,5,5]
解释:274 + 181 = 455
思路分析
两个数相加,我们首先要考虑结果存在哪,我们该开辟多大的空间;我们知道两个数相加,结果的位数最大不会超过两个加数中最大的位数+1;所以我们先要判断传进的k是多少位数:
int kSize = 0;//存储k的位数
int kNum = k; //拷贝一份,方便下面求k的位数
while (kNum)
{++kSize;kNum /= 10;
}
然后我们再通过两个位数的最大值来开辟空间:
//相加的时候以位数多的数来进行开扩空间和循环的判断
int len = numSize > kSize ? numSize : kSize;
int* retArr = (int*)malloc(sizeof(int) * (len + 1));
if (retArr == NULL)
{perror("malloc");exit(-1);
}
有了开辟的空间,我们就要将计算的结果存进空间里,由于进位我们一定是从左到右进行计算的:
为了让大家好理解:我们可以先将每位算出的结果从左到右按顺序存好,最后将其倒置:
整理以上的思路:所以循环体我们可以这样写
while (len--)
{int a = 0;ret = num[end] + nextNums + k % 10;if (ret > 9){ret -= 10;nextNums = 1;}else{nextNums = 0;}retArr[reti] = ret;reti++;k /= 10;end--;
}
但是这时候我们就有一个问题了,如果k的位数比num的元素个数大,这时num就会存在越界的问题:
这时我们可以定义一个变量a = 0,如果end在有效的范围的时候我们就可以直接将num[end]赋值给a,让a与k的对应位相加,但是,如果不是有效位,我们可以将a与其相加:
int a = 0;
if (end >= 0)
{a = num[end];end--;
}
ret = a + nextNums + k % 10;
最后不要忘记了倒置数组:
//倒置数组
int left = 0;
int right = reti - 1;
while (left < right)
{int tmp = retArr[left];retArr[left] = retArr[right];retArr[right] = tmp;left++;right--;
}
代码展示
int* addToArrayForm(int* num, int numSize, int k, int* returnSize) {int kSize = 0;//存储k的位数int kNum = k; //拷贝一份,方便下面求k的位数while (kNum){++kSize;kNum /= 10;}int len = numSize > kSize ? numSize : kSize; //相加的时候以位数多的数来进行开扩空间和循环的判断int* retArr = (int*)malloc(sizeof(int) * (len + 1));if (retArr == NULL){perror("malloc");exit(-1);}int end = numSize - 1;int reti = 0;int nextNums = 0; //判断是否进位int ret = 0;while (len--){//防止k的位数大于num元素个数,导致越界int a = 0;if (end >= 0){a = num[end];end--;}ret = a + nextNums + k % 10;if (ret > 9){ret -= 10;nextNums = 1;}else{nextNums = 0;}retArr[reti] = ret;reti++;k /= 10;}if (nextNums == 1){retArr[reti] = 1;reti++;}//倒置数组int left = 0;int right = reti - 1;while (left < right){int tmp = retArr[left];retArr[left] = retArr[right];retArr[right] = tmp;left++;right--;}*returnSize = reti;return retArr;}
当然,这种算法可以过leetcode的
相关文章:

OJ05:989. 数组形式的整数加法
目录 题目思路分析代码展示 题目 整数的 数组形式 num 是按照从左到右的顺序表示其数字的数组。 例如,对于 num 1321 ,数组形式是 [1,3,2,1] 。 给定 num ,整数的 数组形式 ,和整数 k ,返回 整数 num k 的 数组形…...

山东布谷科技:关于直播源码|语音源码|一对一直播源码提交App Store的流程及重构建议
自从YY、六间房开启国内聊天室和秀场等网红盛行的网络红利时代以来,紧随其后国内各大音视频平台相应出现,先有映客花椒等直播平台的风头正劲,后有功能板块更丰富的头条抖音Tiktok等,盈利功能点不仅仅有直播PK连麦等礼物打赏功能&a…...

docker搭建guacamole,web远程桌面
Apache Guacamole 是一个客户端无插件的远程桌面网关。它支持标准协议,如 VNC、RDP 和 SSH。您可以使用任何现代 web 浏览器连接到您的桌面环境,而无需安装额外的软件。使用 Docker Compose 部署 Guacamole,如果没有docker-compose请先执行su…...

.baxia勒索病毒来袭:数据恢复与防护措施详解
导言 在当今这个信息化高速发展的时代,数据已成为企业和个人的核心资产,其价值不可估量。然而,随着网络技术的不断进步,网络安全威胁也日益严峻,其中勒索病毒作为一种新型的网络攻击手段,尤其是.baxia勒索…...

[UUCTF 2022 新生赛]ezpop 详细题解(字符串逃逸)
知识点: php反序列化字符串逃逸 php反序列化魔术方法 构造pop链 变量引用 其实这一题还是比较简单的,只要看懂代码,并且理解为什么要用反序列化字符串逃逸,下面会详细解释 题目源码: <?php //flag in flag.php error_reporting(0); class UUCTF{public $name,$key,$…...

【Zynq UltraScale+ RFSoC】DFE
DFE : digital front-end 数字前端 Xilinx Zynq RFSoC DFE 是一款突破性的灵活应变无线电平台,可强化数字前端 (DFE),用于 5G 大规模无线电部署和广泛的其他射频应用。 Zynq RFSoC DFE 基于唯一经过生产验证的自适应单芯片无线电…...

Ubuntu学习笔记 - Day3
文章目录 学习目标:学习内容:学习笔记:vim简介vim键盘图工作模式 vim移动光标操作上下左右移动翻页 vim替换和删除操作替换删除 vim插入模式详解进入模式搜索 vim底行模式操作保存退出行号 学习目标: 一周掌握 Linux基本使用技巧 …...

scala list系列
dd list:有序的,链表 1.建立 不可变列表 2.通过下标来访问:下标从0开始 3.不能修改 4.添加 5.删除 6.合并 7.查找,判断元素是否存在 8.遍历...

TLS协议基本原理与Wireshark分析_wireshark分析tls协议
01****背 景 随着车联网的迅猛发展,汽车已经不再是传统的机械交通工具,而是智能化、互联化的移动终端。然而,随之而来的是对车辆通信安全的日益严峻的威胁。在车联网生态系统中,车辆通过无线网络与其他车辆、基础设施以及云端服务…...

【359】基于springboot的智慧草莓基地管理系统
摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本智慧草莓基地管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据…...

【智能算法应用】遗传算法求解车间布局优化问题
摘要 本文研究了基于遗传算法(Genetic Algorithm, GA)的车间布局优化方法。遗传算法是一种基于自然选择和遗传机制的优化算法,通过编码布局方案、交叉和变异操作生成新的布局个体,选择最优的车间布局方案。实验结果表明ÿ…...

java 中List 的使用
List集合是Collection接口的子接口,其下有两个实现类分别为ArrayList和 LinkedList List是一个接口,不能用new创建对象,需要用 ArrayList类 和 LinkedList类 来创建 特点 有序:存储元素的顺序和取出元素的顺序一致可以重复&…...

CSS学习之Grid网格布局基本概念、容器属性
网格布局 网格布局(Grid)是将网页划分成一个个网格单元,可任意组合不同的网格,轻松实现各种布局效果,也是目前CSS中最强大布局方案,比Flex更强大。 基本概念 容器和项目 当一个 HTML 元素将 display 属性…...

前后端交互接口(二)
前后端交互接口(二) 前言 在上一集我们约定了我们前后端交互接口的三条规则。这一集我们就先来看一看我们的一些proto文件。 浅看proto文件 在看文件之前,还是简单谈谈Protobuf Protobuf通过一个.proto文件定义数据结构,这个…...

HarmonyOs DevEco Studio小技巧28--部分鸿蒙生命周期详解
目录 前言 页面和自定义组件生命周期 页面生命周期 onPageShow --- 表示页面已经显示 onPageHide --- 表示页面已经隐藏 onBackPress --- 表示用户点击了返回键 组件生命周期 aboutToAppear --- 表示组件即将出现 onDidBuild --- 表示组件已经构建完成 aboutToDisap…...

STM32(hal库)的msp初始化HAL_TIM_Base_MspInit有什么用?为什么单独设置这个,而不是在timer_init()函数里直接初始化?
在STM32 HAL库中,HAL_TIM_Base_MspInit 函数是一个与定时器(TIM)相关的底层初始化函数,其名称中的 "Msp" 代表 MCU Service Package(微控制器服务包),这是HAL库的一部分,用…...

三品PLM系统如何规范企业图纸文档资料电子化管理
三品PLM系统如何规范企业图纸文档资料电子化管理 图纸文档是企业设计、生产、管理的重要信息载体,是产品设计与生产维护的关键。传统纸质归档已无法满足现代需求,电子化管理成为提升效率和文档一致性的重要手段。然而,许多企业在实施电子化管…...

鸿蒙开发:arkts 如何读取json数据
为了支持ArkTS语言的开发,华为提供了完善的工具链,包括代码编辑器、编译器、调试器、测试工具等。开发者可以使用这些工具进行ArkTS应用的开发、调试和测试。同时,华为还提供了DevEco Studio这一一站式的开发平台,为运行在Harmony…...

Java学习篇之JVM 调优
Java学习篇之JVM 调优 一、JVM 是什么?二、JVM 官方参数建议三、JVM调优的场景四、如何监控JVM五、JVM调优的流程步骤1. 明确优化目标2. 监控和分析3. 确定调优参数4. 实施调优策略5. 持续观察和调整6. 定期评估和优化 一、JVM 是什么? JVM,…...

LangChain上使用huggingface的embedding模型(如jina-embeddings-v3)
一、背景知识 embedding将文本映射到稠密的向量空间中,方便存储和查询。 huggingface的embedding榜单 这里结合自己的应用场景,选择1b以下的embedding模型,综合考量下选择arkohut/jina-embeddings-v3 模型链接 下载 使用模型卡片提供的命令…...

对象优化及右值引用优化(一)
对象优化及右值引用优化 对象的函数调用时机 class Test { public:Test(int val 0) :val_(val) {cout << "Test::Test" << endl;}~Test(){cout << "Test::~Test" << endl;}Test(const Test& test){cout << "Tes…...

江西省技能培训平台(逆向破解登录国密SM2)
江西省技能培训平台(逆向破解登录) 登录破解(国密sm2加密方式) 请求接口 https://api.cloud.wozhipei.com/auth/user/v1/login 使用身份证和密码登录发现有password加密,好开始逆向js 全局搜索发现使用国密SM2进行加密 模拟算法 js 使用js进行模拟算法 <…...

用万用表测量三极管:【判断是NPN\PNP+3极性】
三极管种类分2种,一种NPN型三极管,另外一种为PNP三极管。三极管由2个PN结组成。因此,我们可以将三极管看作由2个二极管组成。通过下图可以知道,三极管的公共端为B极(基极)。 1:测量方法 用万用…...

StableDiffusion系列教程 | 什么是SD?SD能做什么?有哪些应用场景?
随着人工智能技术的飞速发展,人工智能应用已经渗透到我们生活方方面面。在众多AI技术中,Stable Diffusion(简称SD)作为一种先进的图像生成技术,正逐渐成为创意产业的新宠。在本系列的首篇文章中,我们将一起…...

AutoCAD的Dwg版本代号、R版本参数值以及二次开发时VS、.NET版本关系
Dwg的AC版本代号 出处:https://www.autodesk.com.cn/support/technical/article/caas/sfdcarticles/sfdcarticles/CHS/drawing-version-codes-for-autocad.html 以下是AutoCAD图形的不同版本代号: MC0.0 - DWG Release 1.1 AC1.2 - DWG R1.2 AC1.4 - DW…...

解密可观测行业中的语义规范 — 代码世界中的“语言艺术”
可观测行业中的语义规范 语义规范可以说在我们生活中无处不在,它为某种语言或文化中的单词和短语提供了一致的意义,以促进更清晰的交流。 而在计算机世界中,语义规范也同样甚至更加关键,因为屏幕上的文本缺乏更丰富的对话环境—…...

esp32 ap httpsever 控制led
功能:浏览器/open 开 led /close 关led 如不关,则亮灯10秒自动关闭 已买220v 转5V电源,5V固态继电器,开始组装无线开关。 代替家里华为的hlink灯泡,此灯必须要连入网络才能控制开和关,经常时灵时不…...

告别复杂判断!Python中实现函数重载的终极技巧
引言 说到函数重载,学过 Java 的同学应该不陌生,最常用的地方应该就是打印 log 了,对于不同的参数,调用的是不同的重载函数。那么 Python 如何实现函数重载呢? 重载概念 函数重载是指在同一作用域内,允许…...

Clang-Format:让你的代码整齐划一,格式不再烦恼
在现代软件开发中,代码规范和一致性对团队协作和代码质量至关重要。如何保持代码风格一致,避免手动格式化的繁琐操作?clang-format 是一款强大而灵活的代码格式化工具,它为开发者提供了高效的解决方案。本文将详细介绍 clang-form…...

【jvm】Full GC
目录 1. 说明2. 触发条件3. 优化4. 注意事项 1. 说明 1.Full GC(Full Garbage Collection)是Java垃圾回收过程中最重要且最昂贵的一种操作。2.Full GC涉及对整个堆内存(包括年轻代和老年代)的垃圾回收。3.当Full GC发生时&#x…...