Source: https://leetcode.com/problems/convert-integer-to-the-sum-of-two-no-zero-integers/
Given an integer n. No-Zero integer is a positive integer which doesn’t contain any 0 in its decimal representation.
Return a list of two integers [A, B] where:
A and B are No-Zero integers.
A + B = n
It’s guarateed that there is at least one valid solution. If there are many valid solutions you can return any of them.
Example 1:
Input: n = 2
Output: [1,1]
Explanation: A = 1, B = 1. A + B = n and both A and B don’t contain any 0 in their decimal representation.
Example 2:
Input: n = 11
Output: [2,9]
Example 3:
Input: n = 10000
Output: [1,9999]
Example 4:
Input: n = 69
Output: [1,68]
Example 5:
Input: n = 1010
Output: [11,999]
Constraints:
2 <= n <= 10^4
思路:zero数组表示数字是否含有0,1表示含有0,0表示不含0。遍历
class Solution {
public:
int zero[10005]={0};
void helper(){
zero[0]=1;
for(int i=1;i<=100;i++){
if(i%10==0){
zero[i]=1;
}
}
for(int i=101;i<=1000;i++){
if(i%10==0 || (i/10)%10==0){
zero[i]=1;
}
}
for(int i=1001;i<=10000;i++){
if(i%10==0 || (i/10)%10==0 || (i/100)%10==0){
zero[i]=1;
}
}
}
vector<int> getNoZeroIntegers(int n) {
helper();
vector<int> ans(2);
for(int i=1;i<n;i++){
if(zero[i]==0 && zero[n-i]==0){
ans[0]=i;
ans[1]=n-i;
break;
}
}
return ans;
}
};