首页
学习
活动
专区
圈层
工具
发布

加一

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。...---- ---- 题目信息 输入:整数数组(整体表示一个数字每一位就是0-9,个十百千...位) 输出:整数数组(给这个数字加一之后用数组表达对应数字) 思考 一开始想到的就是模拟加法,在仔细读题目后又得到了另一种解决方式...,就是还原成表达的数字加一之后再还原成数组。...加一考虑的点就是进位,加1>设值>判断-要么继续执行这三个步骤要么结束 //方式二 public int[] plusOne(int[] digits) { for (int i = digits.length...[0] = 1; return digits; } 总结 总体来说是简单的两种思路,一是化成数字不用管怎么加再化回数组,二是模拟加法过程。

1.9K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    二进制加,减法,23个位运算技巧

    二进制加,减法 二进制最高位为1时表示负数,为0时表示正数。 **原码:**一个正数,转换为二进制位就是这个正数的原码。负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码。...负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1。...1-0=1; 0不够减1,向前借一后加2变成2;2-1=1; 0在上一步被借一所以减为-1,-1不够减0,向前借一后加2变成1;1-0=1; 1在上一步被借一所以减为0,0不够减1,向前借一后加2...由此推出:数不够减就向前借一位,然后该数加2....可见二进制和十进制减法的区别就是向前借一后加2. 23个位运算技巧 1.获得int型最大值` int getMaxInt(){ return (1 << 31) - 1;//2147483647

    2.7K30

    leetcode 66 | 加一

    给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。...分析:这道题是不是看第一眼是不是就想把数组转化为整数,然后再用这个整数加1,再将这个结果转化为数组~那可就调入这道题的陷阱里了,这样做是不行的,因为这个整数可以很大,大的超过int的范围,甚至超过long...我们可以分情况讨论,第一,我们让数组的最后一个数加1,即个位加1,如果小于10,则说明不存在进位的问题。...所以我们就可以直接返回digits数组;第二,个位加1之后,若大于等于10,说明存在进位问题,所以最后的结果数组的长度可能为digits的数组长度加1。...我们可以定义一个数组result,长度为digits的长度+1,然后把digits数组copy一份到result[1]~result[digits.length],然后来处理进位的问题。

    78730

    LeetCode - #66 加一

    LeetCode 算法到目前我们已经更新了 65 期,我们会保持更新时间和进度(周一、周三、周五早上 9:00 发布),每期的内容不多,我们希望大家可以在上班路上阅读,长久积累会有很大提升。...描述 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。...} digits.insert(1, atIndex: 0) return digits } } 主要思想:迭代并将数组从最后一个更改为第一个...特别感谢 Swift社区 编辑部的每一位编辑,感谢大家的辛苦付出,为 Swift社区 提供优质内容,为 Swift 语言的发展贡献自己的力量,排名不分先后: 张安宇@微软[3]、戴铭@快手[4]、展菲@

    43520

    Swift 加一 - LeetCode

    题目:加一 描述: 给定一个非负整数组成的非空数组,给整数加一。 可以假设整数不包含任何前导零,除了数字0本身。 最高位数字存放在列表的首位。 语文能力捉急啊,看了半天没看懂。。。...好吧,第一句是:给定一个以数字数组表示的非负数,ok,我终于理解题意了???,意思是一个数组里面存放的元素可以看成一个非负整数,现在给这个整数去加一。...那我们需要做的是,去判断这个非负整数加一后需不需要进位,那就容易了。从数组末位开始加一,如果最后一位不是整数9那么直接加一返回数组,如果是整数9那就变成整数0。...极端情况:所有数字都是整数9,那就都变成整数0了,所以需要在数组头部插入一个整数1。...,找到另一种解法,求余然后,设置一个标志位判断是否进位 代码如下: class Solution { func plusOne(_ digits: [Int]) -> [Int] {

    67430

    加一行!

    今天看到一道有趣的题目,分享给大家。 题目不难,但是我感觉挺有意思,大家可以看一下。 做该题之前,我们先来复习下二叉树的基础知识,重点关注节点的层数和深度之间的关系。...更多基础知识大家可以看这篇文章,一文读懂二叉树。 话不多说,咱们直接看题。 leetcode 623在二叉树中增加一行 题目很容易理解,让我们在二叉树特定的层数添加一层特定的节点。...是不是多了一层节点,然后还变丑了?尽力了哈哈,还是画的不帅。 题目已经搞懂,那么大家看到这个题目的第一想法是什么呢?...插入新节点步骤 好啦,到这里我们这个题目就解决啦,下面我们直接看代码吧,当然我这里只是一种写法,大家可以随意发挥。...那我们来想一下结束递归的条件,当root == null 时,我们直接 return;当我们搜索到待插入的那一层时,我们直接插入节点即可,否则的则继续进行搜索,代码很简单,比仅仅比二叉树的 dfs 多了一丢丢逻辑

    56210

    LeetCode | 66.加一

    问题分析 这道题目是给出一个数组,数组的每个元素都是一个个位数,然后对数组的最后一个元素进行加一的操作,加一的操作看似很容易,但是需要考虑两个问题点。...如果数组的最后一个元素是一个小于 9 的元素,那么直接加一就算完成了整个数组的加一操作。...但是,如果数组的最后一个元素是 9,那么就会向数组的倒数第二个元素进行进位,因为要保持每个数组的元素都是一个个位数。因此,我们就需要对数组的倒数第二个元素的值也做加一。...那么当数组的倒数第二个元素在加一后也产生进位,那么就需要接着把进位向前相加。 ? 最后一个元素小于9的情况 ?...而当数组的每一位都为 9 的时候,进行加一的数组比原始数组是多一个元素的。 ?

    42320

    LeetCode 进阶之路 - 加一

    给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。...核心思想就是最后一位加1,然后处理一些临界值的情况,如9、99、999等 先对其进行加1,再拿加1后的值和10进行取余,不为0则表示该值不是9,无需进位,直接返回; 如果加1后得到值取余后得到0,则需要向前进位...,如果每一位都需要进位,最后开辟一个新的数组,数组的长度比之前大1,将数组的第一个值设为1,因为数组不设置的话默认值是0; public class PlusOne { public static...plusOne(num3)); } } Copyright: 采用 知识共享署名4.0 国际许可协议进行许可 Links: https://lixj.fun/archives/leetcode进阶之路-加一

    23720

    加一

    加一 一、题目描述: 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。...题目很简单,找到数组最后一个元素加1即可,但是我这里提出一种进阶的要求,返回的是数字怎么办? 我的思路很简单,从末尾开始,每前一位flag乘10,然后再乘数组中的数字。...比如: 4321:取1 然后 加1 然后flag 为1 ,取2,然后flag乘以10,为10 2乘10得20,取3,然后flag乘10,为100 3乘以100得300,取4 然后flag乘以10,为1000...当我们对数组digits 加一时,我们只需要关注 digits 的末尾出现了多少个 9 即可。...如果不为9,直接加1即可,若末尾有n个9,我们直接将第一个不为9的值加1,然后其他9置0即可,如果都是9,那么我们就构造一个比digits长度多1的新数组,将首元素置为1,其余元素为0即可。

    19940
    领券