leetcode-1317-easy

发布时间 2023-03-29 20:44:48作者: iyiluo

Convert Integer to the Sum of Two No-Zero Integers

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:

a and b are 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 = 9 = n.
Note that there are other valid answers as [8, 3] that can be accepted.
Constraints:

2 <= n <= 104

思路一:随机选数字

    public int[] getNoZeroIntegers(int n) {
        int[] result = new int[2];

        while (true) {
            int x = (int) (Math.random() * n);

            if (isNoZeroInteger(x) && isNoZeroInteger(n - x)) {
                result[0] = x;
                result[1] = n - x;
                break;
            }
        }

        return result;
    }

    public boolean isNoZeroInteger(int n) {
        if (n == 0) {
            return false;
        }
        while (n > 0) {
            int x = n % 10;
            n /= 10;
            if (x == 0) {
                return false;
            }
        }
        return true;
    }