「无零整数」是十进制表示中 不含任何 0 的正整数。
给你一个整数 n,请你返回一个 由两个整数组成的列表 [A, B],满足:
A 和 B 都是无零整数
A + B = n
题目数据保证至少有一个有效的解决方案。
如果存在多个有效解决方案,你可以返回其中任意一个。
这个题如果只为写出的话应是最简单的一类,我们完全可以用暴力破解,首先我们先创建两个变量,一个right初始化为输入的整数减1,一个left初始化为1,那么left+right是不是就等于输入的整数呢?然后我们只需判断left和right它们是不是无零整数,如果是就直接返回它们,如果不是就让left++,rught--就行,直到找到或left>=right就停止。下面是代码
int test(int n)//判断是不是无零整数
{
while (n)
{
if (n % 10 == 0)
return 0;
n /= 10;
}
return 1;
}
int* getNoZeroIntegers(int n, int* returnSize) {
*returnSize = 2;
int i = 1;
int j = n - 1;
int* p1 = (int*)malloc(sizeof(int) * 2);
while (1)
{
if (test(i) && test(j))
{
p1[0] = i;
p1[1] = j;
break;
}
i++;
j--;
}
return p1;
}