How can I delete repeated elements in an ordered array with low space complexity O (1?
# Include <iostream> <br/> # include <cassert> <br/> # include <iterator> <br/> using namespace STD; <br/>/* <br/> * function: deletes duplicate elements in data. Data must be ordered. <br/> × time complexity O (N ), space complexity O (1) <br/> × data []: Input ordered sequence; Length: length of the input array <br/> * returns: new length after removing duplicate elements <br/> */<br/> int removeduplicate (INT data [], int length) <br/>{< br/> assert (Data! = NULL); <br/> assert (length> 0); <br/> Int J = 1; <br/> for (INT I = 1; I <length; I ++) <br/>{< br/> If (data [I]! = Data [I-1]) <br/> data [J ++] = data [I]; <br/> copy (data, data + length, ostream_iterator <int> (cout, ""); <br/> cout <Endl; <br/>}< br/> return J; <br/>}</P> <p> int main () <br/> {<br/> int data [] = {1, 2, 2, 3, 4, 5, 5, 5, 5, 6, 6}; <br/> int newlength = removeduplicate (data, sizeof (data)/sizeof data [0]); <br/> for (INT I = 0; I <newlength; I ++) <br/> cout <data [I] <""; <br/> cout <Endl; </P> <p> system ("pause"); <br/> return 0; <br/>}