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:

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:

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}
}