描述
删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次
例如:
给出的链表为1->1->2,返回1->2.
给出的链表为1→1→2→3→3,返回1→2→3.
示例1
输入: {1,1,2} 返回值: {1,2}
思路
这个就是对链表进行遍历,没遍历到一个元素时,就判断该节点往后是否有重复的,如果有重复的,就一直往后走,直到遇到不重复元素为止,然后删除中间的重复元素即可。
AC 代码
public ListNode deleteDuplicates (ListNode head) { // write code here if (head == null) { return head; } ListNode node = new ListNode(0); node.next = head; while (head != null && head.next != null) { // 当 head 与 next 节点相等时,一直往后走 while (head.next != null && head.val == head.next.val) { head.next = head.next.next; } // 删除中间重复的元素 head = head.next; } return node.next; }
- 时间复杂度:O(n),n 为链表长度
- 空间复杂度:O(1)
最后
大家可以去 【牛客网-题库-在线编程】去练习一下。
可以去微信搜索:【蘑菇睡不着】交个朋友~
也可以扫描下方二维码。