每天一到算法题-数组
白话描述:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。来源:力扣(LeetCode)链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2cv1c/
白话实现:快慢指针,但写起来很臃肿,参考别人的 同样逻辑 但简洁很多
class Solution {
public int[] plusOne(int[] digits) {
if(digits.length==1){
if(digits[0]<9){
return new int[] {digits[0]+1};
}
else{
return new int[] {1,0};
}
}
int[] s=new int[digits.length+1];
boolean jinwei=true;
for(int i=digits.length-1;i>=1;i--){
if(digits[i]<9){
if(jinwei){
s[i+1]=digits[i]+1;
jinwei=false;
}else{
s[i+1]=digits[i];
jinwei=false;
}
}
else{
if(jinwei){
s[i+1]=0;
jinwei=true;
}
else{
s[i+1]=9;
jinwei=false;
}
}
}
if(digits[0]<9){
if(jinwei){
s[1]=digits[0]+1;return Arrays.copyOfRange(s,1,s.length);
}
else{
s[1]=digits[0];return Arrays.copyOfRange(s,1,s.length);
}
}
else{
if(jinwei){
s[1]=0;s[0]=1;return s;
}
else{
s[1]=s[1]=digits[0];return Arrays.copyOfRange(s,1,s.length);
}
}
}
}