加一
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 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;