Files
2020-08-12 20:12:33 +08:00

96 lines
1.9 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# [1317. Convert Integer to the Sum of Two No-Zero Integers](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`
## 题目大意
「无零整数」是十进制表示中 不含任何 0 的正整数。给你一个整数 n请你返回一个 由两个整数组成的列表 [A, B],满足:
- A 和 B 都是无零整数
- A + B = n
题目数据保证至少有一个有效的解决方案。如果存在多个有效解决方案,你可以返回其中任意一个。
## 解题思路
- 给定一个整数 n要求把它分解为 2 个十进制位中不含 0 的正整数且这两个正整数之和为 n。
- 简单题。在 [1, n/2] 区间内搜索,只要有一组满足条件的解就 break。题目保证了至少有一组解并且多组解返回任意一组即可。
## 代码
```go
package leetcode
func getNoZeroIntegers(n int) []int {
noZeroPair := []int{}
for i := 1; i <= n/2; i++ {
if isNoZero(i) && isNoZero(n-i) {
noZeroPair = append(noZeroPair, []int{i, n - i}...)
break
}
}
return noZeroPair
}
func isNoZero(n int) bool {
for n != 0 {
if n%10 == 0 {
return false
}
n /= 10
}
return true
}
```