假设数组有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) //放对位置的 continue; if (v[i] == v[j]) //如果这个坑已经被占 return true; v[i] = v[j]; v[j] = j; // 将第j个元素放到index为j下面 } return 0; }
时间: 2024-10-23 12:27:53