题目:
这个题目的题干不是很好理解,实际上意思是要求你把数组中可能存在的n个非重复元素放到数组的前n位,n位之后的值和答案判定无关,使用原地算法完成。
因为数组已经是升序排列,所以相同的值一定是相邻的,所以可以使用双指针的方法:
设置左右两个指针,开始时左指针指向数字的第一个值,右指针指向数组的第二个值,当两个指针的数相同时,右指针右移直到两值不同,这时左指针右移并将右指针的值复制到左指针的位置,这样就完成了第一个非重复元素的迁移;重复这个操作,直到右指针遍历到数组的最后一个值,算法结束。
来看一下官方的题解: