zoukankan      html  css  js  c++  java
  • leetcode------Plus One

    标题: Plus One
    通过率: 31.1%
    难度: 简单

    Given a non-negative number represented as an array of digits, plus one to the number.

    The digits are stored such that the most significant digit is at the head of the list.

      进北大软微开学考试的时候遇到了这个题目,当时我用的思路就是把数组再转换成十进制数然后加一操作,当时通过了。但是在这里出现了数据的益处问题,当时的测试集应该很小,在这里不通过的一个数据就是{9,8,7,6,5,4,3,2,1},那样做就是越界的问题。

      针对所有的数据应该是从后向前去测试,没有出现等于的9情况就直接+1返回,如果那一位是9那么就置零操作,继续看前一位,以此类推,直到前一位中出现了不是九就加一返回,那么这个停止动作用一个标志位去控制,第二个问题就是第一位也是9如{9,9,9,9}那么数组不够用,要进行数组的扩充操作,整体算法看代码可以直接看出来:

     1 public class Solution {
     2     public int[] plusOne(int[] digits) {
     3         int len=digits.length;
     4         if(digits[len-1]<9){
     5             digits[len-1]++;
     6             return digits;
     7         }
     8         boolean flag=true;
     9         for(int i=len-1;i>=0;i--){
    10             if(!flag){
    11                 break;
    12             }
    13             if(digits[i]==9){
    14                 digits[i]=0;
    15                 if(i==0){
    16                     int [] result=new int[len+1];
    17                     for(int j=0;j<len;j++){
    18                         result[j+1]=digits[j];
    19                     }
    20                     result[0]=1;
    21                     return result;
    22                 }
    23             }
    24             else{
    25                 digits[i]++;
    26                 flag=false;
    27             }
    28         }
    29         return digits;
    30     }
    31 }
  • 相关阅读:
    环形缓冲区: ringbuf.c
    Linux内核中_IO,_IOR,_IOW,_IOWR宏的用法与解析
    list.h在用户态下的应用
    如何优雅的拔盘?
    谨慎调整内核参数:vm.min_free_kbytes
    Linux内核tracepoints
    网卡多队列
    How to use pthread_create && mutex?
    美国电子工程师最值得打工的50个东家
    关于零点和极点的讨论
  • 原文地址:https://www.cnblogs.com/pkuYang/p/4228714.html
Copyright © 2011-2022 走看看