leetcode 2442.反转之后不同整数的数目

1.题目要求:

c 复制代码
给你一个由 正 整数组成的数组 nums 。

你必须取出数组中的每个整数,反转其中每个数位,并将反转后得到的数字添加到数组的末尾。这一操作只针对 nums 中原有的整数执行。

返回结果数组中 不同 整数的数目。

 

示例 1:

输入:nums = [1,13,10,12,31]
输出:6
解释:反转每个数字后,结果数组是 [1,13,10,12,31,1,31,1,21,13] 。
反转后得到的数字添加到数组的末尾并按斜体加粗表示。注意对于整数 10 ,反转之后会变成 01 ,即 1 。
数组中不同整数的数目为 6(数字 1、10、12、13、21 和 31)。
示例 2:

输入:nums = [2,2,2]
输出:1
解释:反转每个数字后,结果数组是 [2,2,2,2,2,2] 。
数组中不同整数的数目为 1(数字 2)。
 

提示:

1 <= nums.length <= 105
1 <= nums[i] <= 106
c 复制代码
//把数字反转的函数
int reverse(int n){
    int number = n;
    int count = 0;//
    while(number){
        count++; 
        number /= 10;
    }
    number = n;
    int sum = 0;
    while(number){
        int temp = number % 10;
        sum +=  (temp * pow(10,count - 1));
        count--;
        number /= 10;
    }
    return sum;
}
int countDistinctIntegers(int* nums, int numsSize) {
    int* number = (int*)malloc(sizeof(int) * numsSize * 2);//设立二倍长度数组,用来存放数组
    memcpy(number,nums,sizeof(int) * numsSize);
    int j = 0;
    j = numsSize;
    //开始进行数字反转
    for(int i = 0;i < numsSize;i++){
        int ret = reverse(nums[i]);
        number[j] = ret;
        j++;
    }
    //用哈希函数来判断不同的整数数目
    int* temp = (int*)malloc(sizeof(int) * 1000000);
    memset(temp,0,sizeof(int) * 1000000);
    for(int i = 0;i < numsSize * 2;i++){
        int index = number[i] - 1;
        temp[index] = number[i];
    }
    int count = 0;
    for(int i = 0;i < 1000000;i++){
        if(temp[i] != 0){
            count++;
        }
    }
    return count;
}

大家如果觉得好的话,不妨给个免费的赞吧,谢谢了

相关推荐
Yeats_Liao15 分钟前
MindSpore开发之路(四):核心数据结构Tensor
数据结构·人工智能·机器学习
fab 在逃TDPIE27 分钟前
Sentaurus TCAD 仿真教程(十)
算法
天赐学c语言1 小时前
12.19 - 买卖股票的最佳时机 && const的作用
c++·算法·leecode
菜鸟233号1 小时前
力扣78 子集 java实现
java·数据结构·算法·leetcode
yesyesyoucan1 小时前
在线魔方解谜站:从零入门到精通的智能魔方学习平台
学习·算法
Han.miracle1 小时前
数据结构与算法--008四数之和 与经典子数组 / 子串问题解析
数据结构·算法
!停1 小时前
字符函数和字符串函数
算法
AI科技星1 小时前
圆柱螺旋运动方程的一步步求导与实验数据验证
开发语言·数据结构·经验分享·线性代数·算法·数学建模
FONE_Platform2 小时前
FONE食品饮料行业全面预算解决方案:构建韧性增长
人工智能·算法·全面预算·全面预算管理系统·企业全面预算
月明长歌2 小时前
【码道初阶】【Leetcode94&144&145】二叉树的前中后序遍历(非递归版):显式调用栈的优雅实现
java·数据结构·windows·算法·leetcode·二叉树