判断数组是否存在重复元素

荒凉一梦 提交于 2019-11-26 22:42:29

假设数组有n个元素,元素取值范围为1~n,如何判断数组是否存在重复元素

将每个元素放到他所应该在的地方。如果在放得时候发现他的坑已经被占了,那么出现重复元素 


bool judgRepeatedElement(vector<int> v){    int j = -1;    for (int i = 0; i < v.size(); i++){        j = v[i];        if (i == j-1)       // 放对位置            continue;        if (j == v[j-1])    // 坑已经被占,说明有重复            return true;        v[i] = v[j-1];      // 先将v[j-1]交换        v[j-1] = j;         // 将j放到v[j-1]处        i--;                // 因为v[i]是新的值,所以需要再处理下    }    return false;}
 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!