美文网首页
数组中找重复数字1

数组中找重复数字1

作者: 净土_0342 | 来源:发表于2018-05-15 15:02 被阅读0次
image.png
  1. 可以先排序,然后循环判断前后数字是否一样,最后得到重复的数字
  1. 也可以用桶排序的思想,进行如果有相同的就放进相同的桶,然后输出就行,不过需要O(n)的空间.
  2. 以下的方法是基于交换的排序,有点迷.原理不知道.
#include <iostream>
using namespace std;
int duplicate(int *nums,int length,int *duplication)
{
    if(nums == nullptr || length<=0)
        return 0;
    for(int i=0;i<length;++i){
        if(nums[i]<0||nums[i]>length-1)
            return 0;
    }
    for(int i=0;i<length-1;i++){
        while(nums[i]!=i){ // 注意这里循环结束的条件.
            if(nums[i] == nums[nums[i]])
            {
                *duplication = nums[i];
                return 1;
            }
            else{
                int temp = nums[i];
                nums[i] = nums[temp];
                nums[temp] = temp;
            }
        }
    }
}
int main() {
    int duplication = -1;
    int nums[]={1,3,2,2,3,5,3};
    if(duplicate(nums,sizeof(nums)/sizeof(int),&duplication)){
        cout << "the duplication is:" << duplication;
    }
    return 0;
}

相关文章

  • 数组中找重复数字1

    可以先排序,然后循环判断前后数字是否一样,最后得到重复的数字 也可以用桶排序的思想,进行如果有相同的就放进相同的桶...

  • 剑指offer4J【C2 P3】找出数组中重复数字

    题目 找出数组中重复的数字数组中数字都在0~n之间,其中有些数字是重复的,但不知道谁重复,可能有1到多个重复的数字...

  • 《剑指offer》刷题笔记(一)

    3-1.数组中重复的数字 思路分析:如果不考虑时间复杂度,则可以先对数组排序(需要 的时间),然后再从中找重复的...

  • Find the Duplicate Number

    题目来源找一个数组中重复的数字,size=n+1,数字范围1-n,不能用额外空间,不能改变原数组,时间复杂度小于O...

  • 剑指offer_数组中重复的数字

    找出数组中重复的数字 1、题目一:找出数组中重复的数字 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 ...

  • java如何找出数组中的不重复数字

    java如何找出数组中的不重复数字 找出数组中不重复的一个数字,题目大致是这样的: 1int[] a = { 1,...

  • CodingInterview 一刷

    1. 找出数组中重复的数字 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,...

  • 数组中重复的数字

    题目一:找出数组中重复的数字 在一个长度为 n 的数组里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复...

  • 剑指offer学习笔记:8.1 数组

    面试题51:数组中重复的数字在一个长度为n的数组中,所有数字都在0到n-1的范围内。数组中的某些数字是重复的,但是...

  • 编程案例自我总结(一)

    此内容仅提供解题思路,应自行尝试撰写具体代码 1.数组中重复的数字查找:查找数组中重复的数字,数组长度为n,取值范...

网友评论

      本文标题:数组中找重复数字1

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