leet code Remove Duplicates from Sorted List 重复元素,只保留一个

思路:

       链表常见的解决方案:快慢指针思路。

1.初始一个指针指向链表的第一个元素,一个指针指向链表的第二个元素,如果两个元素相等,移动第二个元素,直到移动到与第一个指针指向的元素不相等的元素。让第一个指针指向第二个指针的当前元素两个指针同时后移。

public static void main(String[] args) {
		ListNode listNode1=new ListNode(1);
		ListNode listNode2=new ListNode(1);
		ListNode listNode3=new ListNode(2);
		ListNode listNode4=new ListNode(3);
		ListNode listNode5=new ListNode(3);
		listNode1.next=listNode2;
		listNode2.next=listNode3;
		listNode3.next=listNode4;
		listNode4.next=listNode5;
		ListNode listNode = deleteDuplicates(listNode1);
		while (listNode!=null){
			System.out.print(listNode.val+" ");
			listNode=listNode.next;
		}

	}

	public static ListNode deleteDuplicates(ListNode head) {

		if(head==null || head.next==null){
			return head;
		}
		ListNode head1=head;
		ListNode head2=head.next;
		while (head2!=null){
			if(head1.val==head2.val){
				head2=head2.next;
				if(head2==null){
					head1.next=null;
				}
			}else{
				head1.next=head2;
				head1=head1.next;
				head2=head2.next;
			}
		}
		return head;
	}
public class ListNode {

	int val;
	ListNode next;

	ListNode(int x) {
		val = x;
	}
}

猜你喜欢

转载自blog.csdn.net/u011243684/article/details/84624430