移除重复数据

下面这四道题属于同一种类型的题目,前两道是从数组中移除相同的元素,后两道是从链表中移除相同的元素,大同小异,因此放在一起记录下做法。

从数组中移除元素

要求元素各异

对应着LeetCode-26-Remove Duplicates from Sorted Array,是道简单题。
值得注意的是题目并没有要求我们对原来的数组做出修改,这提示我们,只要用后面的元素替换掉重复的那些元素,而不用管留下来的数组是什么样子。由于解法比较直白易懂,因此不做分析直接将代码贴上来,如下:

允许至多两个元素重复

对应着LeetCode-80-Remove Duplicates from Sorted Array。这道题比上一题多了一个额外条件,就是允许数组中的元素至多出现两次。因此我们的代码结构仍和上题类似,只是多用一个变量来记录当前元素出现的次数,如下:

由上面的代码我们可以发现,如果要求改为重复元素不得出现超过三次,那么我们只要把count<2改为count<3即可。

从单链表中移除数据

要求元素各异

对应着LeetCode-83-Remove Duplicates from Sorted List。这道题除了把数组换成单链表以外,和第一题完全相同,因此解题思路也是类似的:

删掉原来单链表中有重复元素的元素

对应着LeetCode-82-Remove Duplicates from Sorted List II,要求是将原来的单链表中所有的有重复元素的元素全部删掉,只留下原来的没有重复元素的那些。

思路:使用递归解法,代码如下:

发表评论

电子邮件地址不会被公开。 必填项已用*标注