视频字幕
我们来演示一个数组去重算法。初始数组包含6个元素,其中周四有3个重复项。算法使用双指针i和k,i指向当前检查位置,k记录重复元素个数。初始时i等于1,k等于0。
第一次循环,i等于1。我们比较data[1]的第二个元素'周二'与data[0]的第二个元素'周一'。由于它们不相同,执行else分支,将data[1]赋值给data[1-0],也就是它自己。然后i增加到2,k保持为0。
第二次循环,i等于2。我们比较data[2]的第二个元素'周四'与data[1]的第二个元素'周二'。由于它们不相同,执行else分支,将data[2]赋值给data[2-0],也就是它自己。然后i增加到3,k保持为0。
第三次循环,i等于3。我们比较data[3]的第二个元素'周四'与data[2]的第二个元素'周四'。由于它们相同,这是第一个重复元素,执行if分支,k增加1变为1。然后i增加到4。
算法执行完毕。通过双指针技术,我们成功删除了数组中的重复元素。原始数组有6个元素,其中周四出现3次。算法保留了每组重复元素的第一个,最终得到4个不重复的元素。这种原地去重算法时间复杂度为O(n),空间复杂度为O(1),非常高效。