LeetCode力扣每日一题(Java)66、加一

每日一题在昨天断开了一天,是因为作者沉迷吉他,无法自拔……竟然把每日一题给忘了,所以今天,发两篇每日一题,把昨天的给补上

一、题目

二、解题思路

1、我的思路

其实乍一看这道题还是比较简单的,就是让数组的最后一个元素加1

但是再仔细想想就不难考虑到一种更加麻烦的情况——进位

如果一个数以9结尾,那么就需要将最后一位置为0,倒数第二位加1,但是如果倒数第二位也是9呢?就需要重复上述操作,将倒数第二位置为0,倒数第三位加1,但是如果倒数第三位也是9呢?如果这个数是1999999999怎么办?我只想说:禁止套娃

想到这里,我的脑海里浮现了一个思路:

将可能的情况分为3种:

1、数组中只有0:直接返回1

2、数组最后一位不是9:直接让最后一位加1,再返回原数组

3、数组最后一位是9:从后往前遍历数组,将值为9的元素全置为0,找到最靠后的一个不为9的元素时,让这个元素加1,结束循环,返回原数组

于是我写了如下代码

if(digits[0] == 0){return new int[] {1};}else if(digits[digits.length - 1] != 9){digits[digits.length - 1]++;return digits;}else{for (int i = digits.length-1; i >= 0 ; i--) {if(digits[i] != 9){digits[i]++;break;}else{digits[i] = 0;}}return digits;}

但这段代码却没有通过所有的测试用例,原因是我遗漏了一种情况,如果数字是999,这就意味着遍历数组将找不到值不为9的元素,按照我的代码走一遍,最后返回的结果是000,而预期结果是1000,也就是说,我们还要加入一段代码:在找不到值不为9的元素时,数组长度加1用于存放多余的1

于是我改进了代码

if(digits[0] == 0){return new int[] {1};}else if(digits[digits.length - 1] != 9){digits[digits.length - 1]++;return digits;}else{int i;for (i = digits.length-1; i >= 0 ; i--) {if(digits[i] != 9){digits[i]++;break;}else{digits[i] = 0;}}if(i == -1){int[] arr = new int[digits.length+1];arr[0] = 1;return arr;}return digits;}

这里有一个小知识点:

由于我们使用的是数组的动态初始化,也就是初始化时只指定数组长度,由系统自动分配初始值,而整数类型的默认初始值是0,所以我们只需要把第一位置为1,在直接返回该数组即可

2、官方题解

官方题解和我的思路是一样的,只是代码略有不同

int n = digits.length;for (int i = n - 1; i >= 0; --i) {if (digits[i] != 9) {++digits[i];for (int j = i + 1; j < n; ++j) {digits[j] = 0;}return digits;}}// digits 中所有的元素均为 9int[] ans = new int[n + 1];ans[0] = 1;return ans;

3、经验分享

其实在写这篇博客之前,我的脑海里是没有完整的思路的,但是当我在博客里分析完题目之后,很快就有思路了,所以大家遇到题目,先不要着急给自己定义:好难、我想不出来等等这些标签,先冷静地分析题目,慢慢地想,可能一开始会思维不严谨、可能会遗漏情况,但是发现问题之后再改进代码也来得及,总比你不动手敲要好吧~

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

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

相关文章

商业智能BI和数据可视化的区别

现在市场上有非常多的商业智能BI产品&#xff0c;几乎都在着重宣传其数据可视化功能的强大&#xff0c;给人造成一种商业智能BI就是数据可视化的印象。事实上商业智能BI并不等于数据可视化。要探究商业智能BI和数据可视化的区别&#xff0c;我们先要分别弄清楚这两个概念。 1、…

gitlab下载,离线安装

目录 1.下载 2.安装 3.配置 4.启动 5.登录 参考&#xff1a; 1.下载 根据服务器操作系统版本&#xff0c;下载对应的RPM包。 gitlab官网&#xff1a; The DevSecOps Platform | GitLab rpm包官网下载地址: gitlab/gitlab-ce - Results in gitlab/gitlab-ce 国内镜像地…

数据结构 | c++编程实现求二叉树的叶节点的个数。(递归非递归)

目录 非递归 递归 非递归 #include<iostream> #include<stack> using namespace std; struct BTNode {int data;BTNode* left, * right;BTNode(int val) :data(val), left(NULL), right(NULL) {}}; //递归的方式求二叉树的叶子结点数 int countnode(BTNode* t) …

智能优化算法应用:基于狮群算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于狮群算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于狮群算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.狮群算法4.实验参数设定5.算法结果6.参考文献7.MA…

常见的Linux基本指令

目录 什么是Linux&#xff1f; Xshell如何远程控制云服务器 Xshell远程连接云服务器 Linux基本指令 用户管理指令 pwd指令 touch指令 mkdir指令 ls指令 cd指令 rm指令 man命令 cp指令 mv指令 cat指令 head指令 ​编辑 tail指令 ​编辑echo指令 find命令 gr…

记一次挖矿病毒的溯源

ps&#xff1a;因为项目保密的原因部分的截图是自己在本地的环境复现。 1. 起因 客户打电话过来说&#xff0c;公司web服务异常卡顿。起初以为是web服务缓存过多导致&#xff0c;重启几次无果后觉得可能是受到了攻击。起初以为是ddos攻击&#xff0c;然后去查看web服务器管理…

Python调用API的实用技巧

导语&#xff1a;在当今的软件开发世界中&#xff0c;API&#xff08;应用程序接口&#xff09;已成为数据传输和功能调用的重要桥梁。Python作为一种功能强大的编程语言&#xff0c;提供了多种调用API的方法。本文将分享一些实用的Python调用API技巧&#xff0c;帮助你更好地利…

GoLang EASY 游戏框架 之 应用项目+教程 02

1 Program Examples Overview 用easy 实现的 服务端 和客户端样例。 simple 项目构建了比较完备的目录结构&#xff0c;可以作为空项目拿到项目中直接应用。 传送门&#xff1a;https://github.com/slclub/easy 位置&#xff1a; examples/simple examples/simple_cl…

【坑备注】自定义@Repeatable注解

在字段上定义可重复使用的注解&#xff1a; Target(value {ElementType.FIELD}) Retention(value RetentionPolicy.RUNTIME) Repeatable(value Indexes.class) public interface TableIndex {IndexTypeEnum type();String name();int order(); } 这里指定了Repeatable注解…

最大子数组和java实现【动态规划基础练习】

12.15 最大子数组和 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组 是数组中的一个连续部分。 示例 1&#xff1a; 输入&#xff1a;nums [-2,1,-3,4,-1,2,1,-5,4]…

深入了解空号检测API:提升通信效率的关键

引言 随着通信技术的不断发展&#xff0c;人们对于通信效率的要求也越来越高。在通信过程中&#xff0c;空号检测是一个非常重要的环节&#xff0c;它可以帮助我们避免无效的通信&#xff0c;提高通信效率。而空号检测API则是实现空号检测功能的重要工具。 空号检测API 空号…

git的分支的使用,创建分支,合并分支,删除分支,合并冲突,分支管理策略,bug分支,强制删除分支

GIT | 分支 文章目录 GIT | 分支创建分支合并分支删除分支合并冲突分支管理策略bug分支强制删除分支 创建分支 查看当前本地仓库中有哪些分支 git branchHEAD所指向的分支就是当前正在工作的分支 cat .git/HEAD创建一个分支 git branch dev创建好了&#xff0c;但是目前还是…

MapReduce模拟统计每日车流量-解决方案

MapReduce模拟统计每日车流量-解决方案 1.Map阶段&#xff1a;将原始数据分割成若干个小块&#xff0c;每个小块由一个Map任务处理。Map任务将小块中的每个数据项映射成为一个键值对&#xff0c;其中键为时间戳&#xff0c;值为车流量。2.Shuffle阶段&#xff1a;将Map任务输出…

数字人克隆系统源码无限克隆数字人!

随着人工智能技术的不断发展&#xff0c;数字人的应用越来越广泛。数字人可以用于虚拟演员、虚拟客服、虚拟主持人等领域&#xff0c;为企业和个人带来更多的商业价值和娱乐体验。然而&#xff0c;数字人的制作过程需要大量的人力和时间&#xff0c;成本较高&#xff0c;限制了…

记一次clickhouse启动报错

clickhouse一次排错 clickhouse启动报错 报错&#xff1a; Application: Code: 210. DB::Exception: Listen [::]:8123 failed: Poco::Exception. Code: 1000, e.code() 0, DNS error: EAI: Address family for hostname not supported (version 23.3.1.2823 (official bui…

QT6.3下载及安装步骤详解

QT 6.3 是 QT 的最新版本&#xff0c;它带来了许多新的功能和改进。下面介绍 QT 6.3 的下载和安装步骤。 1. 下载 QT 6.3 首先&#xff0c;需要从 QT 官方网站下载 QT 6.3 的安装包。打开浏览器&#xff0c;进入 QT 官方网站&#xff08;https://www.qt.io/&#xff09;&am…

23年Q2.Q3书单更新

0x00 如题 记录Q2.Q3阅读过的有价值的文章。 0x01 文章 Nginx正向代理配置-嗨客网 OU/Group/Group Policy组织单元、组和组策略_回关看不曾走远的技术博客_51CTO博客 https://www.cnblogs.com/-qing-/p/14979735.html ----域渗透-LDAP中域内组、OU笔记 Linux chmod 命令…

破局:国内市场确实存在“消费升级”和“消费降级”,3.0全新新零售商业模式

国内市场确实存在“消费升级”和“消费降级”两个趋势&#xff0c;这是由于不同消费者群体的需求和购买力存在差异。消费升级主要发生在高端市场&#xff0c;消费者愿意为高品质、高价值、高价格的商品和服务付出更多。而消费降级则主要发生在中低端市场&#xff0c;消费者更加…

vue2项目vue-qrcode-reader 扫一扫二维码插件

vue2项目 vue-qrcode-reader 扫一扫二维码插件 问题所在解决办法成功展示 问题所在 今天在引导师弟做扫二维码功能&#xff0c;发现通过npm install --save vue-qrcode-reade安装死活就是报错TypeError: Object...) is not a function 解决办法 百度了很多大牛的博客&#…

serializable和parcelable的区别(GPT回答)

在 Android 中&#xff0c;Parcelable 和 Serializable 是两种用于实现对象序列化和反序列化的接口&#xff0c;但它们有一些重要的区别&#xff1a; 性能&#xff1a; Parcelable 比 Serializable 更高效。Parcelable 的设计目标是为了在 Android 中传递对象数据&#xff0c;尤…