zoukankan      html  css  js  c++  java
  • Rust 加一

    加一

    给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

    最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

    你可以假设除了整数 0 之外,这个整数不会以零开头。

    思路: 先旋转数组便于计算,声明一个变量保存进位,先加上进位,然后进位清零,在比较大小,大于9,进位加1;最后判断最后一位是否为零,是零push(1),最后旋转过来;

    impl Solution {
        pub fn plus_one(digits: Vec<i32>) -> Vec<i32> {
            let mut vec = digits;
            let len = vec.len();
            if vec[len -1] < 9{
                vec[len-1] = vec[len-1]+1;
                return vec;
            }
            vec.reverse();
            let mut j =1;
            for  i in 0..len {
                vec[i] = vec[i] + j;
                j = 0;
                if vec[i] > 9{
                  j = 1;
                  vec[i] = 0;
                }
            }
            if vec [len -1 ] == 0{
                vec.push(1)
            }
            vec.reverse();
            return vec;
            }
    }
    

     可以不旋转,在头部插入,就是做一下镜像处理。

            let mut vec = digits;
        let len = vec.len();
        if vec[len -1] < 9{
            vec[len-1] = vec[len-1]+1;
            return vec;
        }
        // vec.reverse();
        // for i in 0..len-1{
        //     print!("{}  ",vec[i])
        // }
        let mut j =1;
        for  i in 0..len {
            vec[(len-1) - i] = vec[(len-1) - i] + j;
            j = 0;
            if vec[(len-1) - i] > 9{
              j = 1;
              vec[(len-1) - i] = 0;
            }
        }
        if vec [0 ] == 0{
            vec.insert(0, 1)
        }
        // vec.reverse();
        return vec;
    
  • 相关阅读:
    【JDK】JDK源码分析-LinkedList
    【JDK】JDK源码-Queue, Deque
    【JDK】JDK源码分析-Vector
    【JDK】JDK源码分析-ArrayList
    Jmeter-安装及配置(一)
    数据库连接池技术
    2017年度总结
    Windows重装系统
    Java + Selenium + Appium手机自动化测试
    DbVisualizer出现下列错误:Could not read XML file
  • 原文地址:https://www.cnblogs.com/Addoil/p/13391001.html
Copyright © 2011-2022 走看看