前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每天一道leetcode66-加1

每天一道leetcode66-加1

作者头像
乔戈里
发布2019-09-17 14:56:53
5000
发布2019-09-17 14:56:53
举报
文章被收录于专栏:Java那些事Java那些事

前言

2018.11.17号打卡 明天的题目leetcode16: https://leetcode-cn.com/problems/3sum-closest/description/

题目

每天一道leetcode66-加1 分类:数组 中文链接: https://leetcode-cn.com/problems/plus-one/description/ 英文链接 https://leetcode.com/problems/plus-one/description/

题目详述

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。 示例 2: 输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321。

题目详解

思路

  • 分两种情况讨论,一种是数组中的数字都是9,比如999,这时候数组长度需要+1;首位置位1,后几位置位0。
  • 另一种是情况是不全是9,那么加1的话,比如说个位是9,那么就把个位变为0,同时下一位加1,就是通过判断每一位是不是9来结束这个判断(从个位到最高位依次+1,直到不是9就结束循环

代码

代码语言:javascript
复制
class Solution {
    public int[] plusOne(int[] digits) {
        boolean flag = true;
        for(int i=0;i<digits.length;i++)
        {
            if(digits[i] != 9)
            {
                flag = false;
                break;
            }
        }
        if(flag)
        {
            int [] result = new int [digits.length+1];
            result[0] = 1;
            return result;
        }else{
            for(int i=digits.length-1;i>=0;i--)
            {
                if(digits[i] != 9)
                {
                    digits[i] += 1;
                    break;
                }else{
                    digits[i] = 0;
                }
            }
        }
        return digits;
    }
}

代码讲解

  • 4-11行 判断数字是不是全是9,
  • 12-16行 全是9则直接new一个数组,最高位置位1,其它位置位0
  • 24-26行 就是从个位开始判断是不是9如果是9,那么就把这一位变成0,
  • 20-23行 就是一位不是9,那么加1以后,不会产生进位,循环结束

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员乔戈里 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 题目
  • 题目详述
  • 题目详解
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档