题解 | #删除有序链表中重复的元素-I#
删除有序链表中重复的元素-I
http://www.nowcoder.com/practice/c087914fae584da886a0091e877f2c79
原理:运用双指针,指针p1扫描整个链表,p2在p1的基础上寻找与p1所指结点val值相等的结点;若找到,则对该节点进行删除,之后选择删除结点之前的结点作为p2的指向,继续扫描,p1扫描完整个链表后,返回链表的头节点。
public class Solution {
public ListNode deleteDuplicates (ListNode head) {
// write code here
//指针p1(for循环)
for (ListNode p1 = head; p1!=null; p1 = p1.next) {
//指针p2(for循环)
for (ListNode p2 = p1.next; p2!=null; p2 = p2.next) {
//找到val相等的结点之后的删除操作
if (p1.val==p2.val) {
ListNode p3 = head;
while (p3.next!=p2)
p3 = p3.next;
p3.next = p2.next;
p2 = p3;
}
}
}
return head;
}
}