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

news2024/11/18 0:30:19

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

一、题目

二、解题思路

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 中所有的元素均为 9
        int[] ans = new int[n + 1];
        ans[0] = 1;
        return ans;

3、经验分享

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

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

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

相关文章

C/C++ 汇总区间-返回恰好覆盖数组中所有数字的最小有序区间范围列表

给定一个无重复元素的有序数数组ums。返回恰好覆盖数组中所有数字的最小有序区间范围列表。 也就是说&#xff0c;nums 的每个元素都恰好被某个区间范围所覆盖&#xff0c;并且不存在属于某个范围但不属于 nums 的数字x。 列表中的每个区间范围 [a,b] 应该按如下格式输出&…

zabbix——实现高效网络监控

在当今的数字化时代&#xff0c;网络和服务器的健康状况对于企业的正常运营至关重要。为了及时发现和解决潜在的问题&#xff0c;许多企业选择使用网络监控工具来追踪服务器的性能和网络参数。其中&#xff0c;Zabbix是一个功能强大且开源的网络监控工具&#xff0c;被广泛应用…

unity 2d 入门 飞翔小鸟 死亡闪烁特效(十三)

一、c#脚本 using System.Collections; using System.Collections.Generic; using UnityEngine;public class Bling : MonoBehaviour {public Texture img;public float speed;public static bool changeWhite false;private float alpha0f;// Start is called before the fi…

EasyRecovery(数据恢复软件) 2024中文绿色无需激活版下载

EasyRecovery是一款功能强大且专业的数据恢复软件&#xff0c;软件能够对电脑误删的文件进行恢复&#xff0c;包括格式化硬盘是数据恢复、手机U盘数据恢复等&#xff0c;小编今天给大家带来的是根据官软件解压后直接使用。感兴趣的朋友快来下载使用吧。 EasyRecovery-2024mac最…

PCL显示double类型的点云方案

前言 我们知道&#xff0c;PCL和OpenGL等三维可视化软件一样&#xff0c;为了兼顾性能需求&#xff0c;只支持加载Float类型的点云数据&#xff0c;但是当我们对精度要求太高时&#xff0c;Float类型支持不了我们的精度要求&#xff0c;我们的数据必须用Double类型存储才可以&…

Vue 3 开发中遇到的问题及解决方案(fix bug)

开发环境&#xff1a;mac系统&#xff0c;node版本&#xff1a; 16.15.0 版本兼容问题 vite v3.2.4 building for development... hasInjectionContext is not exported by node_modules/pinia/node_modules/vue-demi/lib/index.mjs, imported by node_modules/pinia/dist/pini…

【MySQL命令】show slave status\G 超详细全面解释

这个命令是DBA日常运维中常用来查看主从状态的命令&#xff0c;很多备份&#xff0c;监控工具也会使用到该命令监控主从状态是否正常&#xff0c;主从延迟&#xff0c;获取位点信息等。作为常用日常命令&#xff0c;一定要完全理解该命令的输出。今天主要结合 官方文档 和 实际…

AndroidStudio使用小技巧(持续更新中)

改过一次后&#xff0c;当时还记着&#xff1b;再拿起来&#xff0c;就忘记了。还是记下来吧。 使用鼠标滚轮设置文本的字体大小 左上角 File->Setting->Editor 启动时设置是否自动打开项目 老版本AS会有 Reopen last project on startup新版本AS有 Reopen projects o…

Stable Diffusion - High-Resolution Image Synthesis with Latent Diffusion Models

Paper name High-Resolution Image Synthesis with Latent Diffusion Models Paper Reading Note Paper URL: https://arxiv.org/abs/2112.10752 Code URL: https://github.com/CompVis/latent-diffusion TL;DR 2021 年 runway 和慕尼黑路德维希马克西米利安大学出品的文…

《从入门到精通:AJAX基础知识解析,前端开发中利器》基础篇

目录 学习目标&#xff1a; 学习目录&#xff1a; 学习时间&#xff1a; 学习内容&#xff1a; 什么是 AJAX&#xff1f; 怎么用 AJAX &#xff1f; 认识 URL 协议 域名 资源路径 获取 - 新闻列表 URL 查询参数 axios&#xff0d;查询参数 常用请求方法和数据提…

【docker】镜像使用(Nginx 示例)

查看本地镜像列表 docker images删除本地镜像 # docker rmi [容器 ID]docker rmi a6bd71f48f68 查找镜像 docker search nginx 参数介绍 NAME: 镜像仓库源的名称DESCRIPTION: 镜像的描述OFFICIAL: 是否 docker 官方发布STARS: 点赞、喜欢AUTOMATED: 自动构建。 拉去镜像 …

动态雨滴个人主页导航页

资源入口 动态雨滴玻璃掉落主页&#xff0c;和之前的两个一个性质&#xff0c;css全部重构&#xff0c;canvas绘制的下雨背景&#xff0c;可以自己去换图片。 原版&#xff1a; 已二次开发&#xff08;可添加多个导航格及自适应手机端&#xff09; ------本页内容已结束&#x…

DHTMLX Suite v8.3发布!深化JavaScript UI小部件库使用体验

DHTMLX UI 组件库允许您更快地构建跨平台、跨浏览器 Web 和移动应用程序。它包括一组丰富的即用式 HTML5 组件&#xff0c;这些组件可以轻松组合到单个应用程序界面中。 DHTMLX Suite v8.3已于近日正式发布啦&#xff01;这个更新附带了一组新特性和改进&#xff0c;旨在促进您…

销售技巧培训之如何提升网络销售技巧

销售技巧培训之如何提升网络销售技巧 随着互联网的普及&#xff0c;网络销售已经成为了一种重要的销售方式。对于许多企业来说&#xff0c;网络销售已经成为了一种重要的销售渠道。但是&#xff0c;要想在网络销售中取得成功&#xff0c;就需要掌握一些网络销售技巧。本文将介…

php 和 python 跨界 合作 phpy搭建 已解决

需求介绍 1、在日常功能开发中&#xff0c;难免会使用python的计算库&#xff0c;同时自己要是一名PHP开发工程师。就在最近有相应的需求&#xff0c;索性使用phpy来进行功能开发 安装 windows版本 phpy 是识沃团队最新推出的开源项目&#xff0c;目标是为 PHP 引入 Python 生…

『App自动化测试之Appium应用篇』| 元素定位工具uiautomatorviewer从简介、特点、启动到使用的完整过程

『App自动化测试之Appium应用篇』| 元素定位工具uiautomatorviewer从简介、安装、配置到使用的完整过程 1 uiautomatorviewer简介2 uiautomatorviewer特点3 uiautomatorviewer启用4 Work Bar5 Screenshot6 控件布局7 控件属性8 连接设备9 Error while obtaining UI问题排查 1 u…

客户端游戏开发者要不要学习服务端开发的相关技能?

引言 大家好&#xff0c;今天继续分享点个人经验。 玩过游戏的小伙伴都知道&#xff0c;游戏会有单机和联网之分。 单机游戏通常以高质量3A大作著称&#xff0c;它的特点是独立的运行环境&#xff0c;不受网络的限制。 联机游戏则以全球互联、实时同步以及社交互动等特点发…

2023.12.12 关于 Java 反射详解

目录 基本概念 定义 用途 反射相关的类 反射基本原理 Class 类中的相关方法 常用获得类相关的方法 常用获得类中属性相关的方法 常用获得类中构造器相关的方法 常用获得类中方法相关的方法 实例理解 反射优缺点 基本概念 定义 Java 的反射&#xff08;reflection&a…

Unity 置顶OpenFileDialog文件选择框

置顶文件选择框 &#x1f32d;处理前&#x1f959;处理后 &#x1f32d;处理前 &#x1f959;处理后 解决方案

持续集成交付CICD:CentOS 7 安装SaltStack

目录 一、理论 1.SaltStack 二、实验 1.主机一安装master 2.主机二安装第一台minion 3.主机三安装第二台minion 4.测试SaltStack 一、理论 1.SaltStack &#xff08;1&#xff09;概念 SaltStack是基于python开发的一套C/S自动化运维工具&#xff0c;通信采用了zerom…