博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lintcode:Plus One 加一
阅读量:6463 次
发布时间:2019-06-23

本文共 1989 字,大约阅读时间需要 6 分钟。

题目:

给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。

该数字按照大小进行排列,最大的数在列表的最前面。

样例

给定 [1,2,3] 表示 123, 返回 [1,2,4].

给定 [9,9,9] 表示 999, 返回 [1,0,0,0].

解题:

好像只有这样搞,对应进位的时候,要新定义个数组

Java程序:

public class Solution {    /**     * @param digits a number represented as an array of digits     * @return the result     */    public int[] plusOne(int[] digits) {        // Write your code here        int len = digits.length;        int carray = 1;        for(int i = len-1;i>=0;i--){            carray +=digits[i];            digits[i] = carray%10;            carray = carray/10;        }        if(carray!=1)            return digits;        else {            int nums[] = new int[len+1];            nums[0] = 1;            for(int i=1;i
View Code

总耗时: 11253 ms

Python程序:

class Solution:    # @param {int[]} digits a number represented as an array of digits    # @return {int[]} the result    def plusOne(self, digits):        # Write your code here        carray = 1         for i in range(len(digits)-1,-1,-1):            carray +=digits[i]            digits[i] = carray%10            carray = carray/10                if carray!=1:            return digits        else:            digits = [1] + digits            return digits
View Code

总耗时: 413 ms

=================================更新===================================

参考 中一个很好的方法

abcde + 1

有下面的情况:

1.个位数小于9 ,加一后,只是把个位数加一,其他位数没有变,可以直接返回加一后的数组就是答案

2.个位数等于9,说明需要进位,各位数变为0,,十位数 可能小于9 或者等于9的情况,转向 1、2进行讨论

3.最高位等于9,加一后需要进位,这个1一定是开始的1,慢慢先前加进去的,说明这个数全是9,而最后的结果是1000000,这样的形式

所以只需要新定义一个数组,第一位数是1,其余是0,长度是原始数组长度加一。

 

public class Solution {    /**     * @param digits a number represented as an array of digits     * @return the result     */    public int[] plusOne(int[] digits) {        // Write your code here        int n = digits.length;    for(int i=n-1; i>=0; i--) {        if(digits[i] < 9) {            digits[i]++;            return digits;        }        digits[i] = 0;    }    int[] newNumber = new int [n+1];    newNumber[0] = 1;    return newNumber;    }}

 

转载地址:http://hghzo.baihongyu.com/

你可能感兴趣的文章
centos 7 部署LDAP服务
查看>>
揭秘马云帝国内幕:马云的野心有多大
查看>>
iOS项目分层
查看>>
一个action读取另一个action里的session
查看>>
IntelliJ IDEA 注册码
查看>>
String字符串的截取
查看>>
DynamoDB Local for Desktop Development
查看>>
用javascript验证哥德巴赫猜想
查看>>
Shell编程-环境变量配置文件
查看>>
[Unity3d]DrawCall优化手记
查看>>
Struts2和Spring MVC的区别
查看>>
理解Javascript参数中的arguments对象
查看>>
p2:千行代码入门python
查看>>
bzoj1106[POI2007]立方体大作战tet*
查看>>
spring boot configuration annotation processor not found in classpath问题解决
查看>>
团队项目测试报告与用户反馈
查看>>
Mysql中文字符串提取datetime
查看>>
由中序遍历和后序遍历求前序遍历
查看>>
我学习参考的网址
查看>>
easyui的combotree以及tree,c#后台异步加载的详细介绍
查看>>