美文网首页
剑指offer 3# 原地找数

剑指offer 3# 原地找数

作者: 再凌 | 来源:发表于2020-04-28 17:27 被阅读0次

在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。

最佳方法

原地交换算法, 空间复杂度是O(1), 当nums[i] != i的时候, 检测nums[i]和nums[nums[i]]是否一样, 如果一样就返回, 不一样就交换, 让所有nums[i]都是i排序


很直观的一道题, 使用hash散列变量

C语言的Hash实现采用leetcode自带的UT_Hash, 具体使用方法见UT_Hash快速入门

int findRepeatNumber(int* nums, int numsSize){
    typedef struct UT_Hash{
        UT_hash_handle hh;
        int id;
    }UT_Hash;
    UT_Hash *table = NULL, *p1 = NULL;


    for(int i = 0; i<numsSize; i++) //对于每一个元素
    {
        HASH_FIND_INT(table,&nums[i],p1);
        if(p1)//如果找到了这个元素
        {
            return nums[i];
        }
        else
        {
            p1 = (UT_Hash*)malloc(sizeof(UT_Hash));
            p1->id = nums[i];
            HASH_ADD_INT(table, id, p1);//将该元素加入table中
        }
    }
    return 0;//没有找到
}

相关文章

  • 剑指offer 3# 原地找数

    在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个...

  • [剑指offer] 丑数

    本文首发于我的个人博客:尾尾部落 题目描述 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6...

  • 【剑指 offer】丑数

    1、题目描述 我们把只包含因子2、3和5的数称作丑数(Ugly Number)。 例如6、8都是丑数,但14不是,...

  • 全网最全剑指offer题目解答

    【剑指offer】Java版代码(完整版) 【剑指offer】1-10题 【剑指offer】11-20题 【剑指o...

  • 剑指offer 4# 表中找数

    在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一...

  • ARTS 05

    Algorithm [剑指offer] 丑数Review Google如何跟踪您的个人信息Tip ...

  • 剑指 Offer 49. 丑数

    剑指 Offer 49. 丑数[https://leetcode-cn.com/problems/chou-shu...

  • 剑指offer----丑数

    题目:把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子...

  • 【剑指Offer 34】丑数

    题目:我们把只包含因子2、3 和5 的数称作丑数(Ugly Number)。求从小到大的顺序的第1500个丑数。 ...

  • 【python】剑指offer,丑数?

    题目:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质...

网友评论

      本文标题:剑指offer 3# 原地找数

      本文链接:https://www.haomeiwen.com/subject/zzdbwhtx.html