C# 代码
// 从低位向高位处理,遇到1拆成2 + x, 其他情况拆成1 + x即可
public class Solution {
public int[] GetNoZeroIntegers(int n) {
int a = n < 10 ? 1 : 0;
int x = n;
// 记录当前处理到第几位
int digit = 1;
while (x >= 10){
int temp = x % 10;
// 当最低位是0或者1的时候,x还需要减去对应的数值,用来借位
if (temp == 1){
a = digit * 2 + a;
x -= 2;
}
else{
a = digit * 1 + a;
x -= 1;
}
digit *= 10;
x /= 10;
}
return new int[2] { a, n - a };
}
}