假设数组有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;
}
 

 

相关文章:

  • 2022-02-13
  • 2022-12-23
  • 2022-12-23
  • 2021-10-31
  • 2021-06-11
  • 2021-07-07
  • 2021-11-17
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-27
  • 2022-12-23
  • 2021-10-25
相关资源
相似解决方案