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 国内镜像地…

智能优化算法应用:基于狮群算法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;帮助你更好地利…

最大子数组和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;但是目前还是…

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

随着人工智能技术的不断发展&#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…

破局:国内市场确实存在“消费升级”和“消费降级”,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 解决办法 百度了很多大牛的博客&#…

Leetcode—2415.反转二叉树的奇数层【中等】

2023每日刷题&#xff08;六十&#xff09; Leetcode—2415.反转二叉树的奇数层 BFS的C实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(n…

【docker 】Dockerfile指令学习

学习文档地址 上篇文章&#xff1a;【docker 】基于Dockerfile创建镜像 Dockerfile指令文档地址 .dockerignore 文件 Dockerfile指令 常见的指令 Dockerfile 指令说明FROM指定基础镜像&#xff0c;用于后续的指令构建。MAINTAINER指定Dockerfile的作者/维护者。&#xff…

RK3568平台(网络篇) 有线网络基本概念及测试手法

一.什么是交换机&#xff1f; 交换机是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路。最常见的交换机是以太网交换机。交换机工作于OSI参考模型的第二层&#xff0c;即数据链路层。交换机拥有一条高带宽的背部总线和内部交换…

c++原子变量

原子变量 概述 ​ C11提供了一个原子类型std::atomic<T>&#xff0c;通过这个原子类型管理的内部变量就可以称之为原子变量&#xff0c;我们可以给原子类型指定bool、char、int、long、指针等类型作为模板参数&#xff08;不支持浮点类型和复合类型&#xff09;。 ​ …

51单片机应用从零开始(十一)·数组函数、指针函数

51单片机应用从零开始&#xff08;九&#xff09;数组-CSDN博客 51单片机应用从零开始&#xff08;十&#xff09;指针-CSDN博客 目录 1. 用数组作函数参数控制流水花样 2. 用指针作函数参数控制 P0 口 8 位 LED 流水点亮 1. 用数组作函数参数控制流水花样 要在51单片机中…

回溯算法第一篇(子集树问题【三种思路】、0-1背包问题、最小重量机器设计问题)

目录 1. 子集树问题 解法一 解法二 解法三 2. 0-1背包问题&#xff08;使用子集树解决&#xff09; 3. 最小重量机器设计问题 1. 子集树问题 子集力扣链接 题目描述&#xff1a;给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的子集&am…

NV040D语音芯片应用于取暖桌:智能语音提高用户体验

科技与生活的结合&#xff0c;是科技发展的展示。天气的降温&#xff0c;取暖桌越来越取得用户的心&#xff0c;时至今日传统的取暖桌已经没有办法满足用户的需求&#xff0c;智能语音取暖桌给用户的生活带来了不一样的体验。 NV040D语音芯片是一款性能稳定的芯片&#xff0c;拥…