如何删除有序数组中的重复元素,空间复杂度O(1),时间复杂度尽可能低? #include <iostream> #include <cassert> #include <iterator> using namespace std; /* *函数功能:删除data数据中的重复元素,需保证data有序 ×时间复杂度O(n),空间复杂度O(1) ×data[] : 输入的有序序列; length : 输入数组的长度 *Returns : 移除重复元素后的新长度 */ int RemoveDuplicate(int data[], int length) { assert(data != NULL); assert(length > 0); int j = 1; for (int i = 1; i < length; i++) { if(data[i] != data[i-1]) data[j++] = data[i]; copy(data, data + length, ostream_iterator<int>(cout, " ")); cout<<endl; } return j; } int main() { int data[] = { 1, 2, 2, 3, 4, 5, 5, 5, 5, 6, 6 }; int newLength = RemoveDuplicate(data, sizeof(data) / sizeof data[0]); for(int i = 0; i < newLength; i++) cout << data[i] << " "; cout << endl; system("pause"); return 0; }