Convert Integer to the Sum of Two No-Zero Integers
Problem Description
No-Zero integer is a positive integer that does not contain any 0 in its decimal representation.
Given an integer n, return a list of two integers [a, b] where:
aandbare No-Zero integers.a + b = n
The test cases are generated so 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: Let a = 1 and b = 1. Both a and b are no-zero integers, and a + b = 2 = n.
Example 2:
Input: n = 11 Output: [2,9] Explanation: Let a = 2 and b = 9. Both a and b are no-zero integers, and a + b = 11 = n. Note that there are other valid answers as [8, 3] that can be accepted.
Constraints:
2 <= n <= 104
Solution (Go)
func getNoZeroIntegers(n int) []int {
a, b, step := 0, 0, 1
for n > 0 {
digit := n % 10
n /= 10
if (digit == 0 || digit == 1) && n > 0 { // n>0 evades the case when 1 is the most significant digit
a += step * 9
b += step * (digit + 1)
n-- // handle carry
} else {
a += step * 1
b += step * (digit - 1)
}
step *= 10
}
return []int{a, b}
}