将整数转换为两个无零整数的和

「无零整数」是十进制表示中 不含任何 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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值