淘宝网站制作多少钱,wordpress忘记密码邮件收不到,品牌创意设计公司,福建建设执业资格注册管理中心网站问题描述#xff1a;存在一个按照升序排列的链表#xff0c;给你这个链表的头结点head#xff0c;请你删除链表中所有存在数字重复情况的节点#xff0c;只保留链表中没有出现的数字#xff0c;返回的结果同样按升序的结果链表。
求解思路#xff1a;双指针求解#xf…问题描述存在一个按照升序排列的链表给你这个链表的头结点head请你删除链表中所有存在数字重复情况的节点只保留链表中没有出现的数字返回的结果同样按升序的结果链表。
求解思路双指针求解定义两个指针开头均指向头结点若下一个节点与当前节点不同同时前进若相同则第二个指针向前走一直到遇到不同的节点此时让第二个节点的next指向第二个指针第一个指针前移继续进行判断。直到都指向null。
public ListNode deleteDupItem(ListNode root)
{
ListNode firstroot;
ListNode secondroot;
while(first!nullsecond!null)
{
if(first.next.val!first.val)
{
firstfirst.next;
secondsecond.next;
}else
{
while(second!nullsecond.valfirst.val)
{
secondsecond.next;
}
first.nextsecond;
firstfirst.next;
secondfirst;
}
}
return root;
}
递归求解如果当前元素和下一个元素相同则删除下一个元素指向下下个元素直到完全处理完毕。
public void dfs(ListNode root)
{
if(rootnull){return;}
if(root.valroot.next.valroot.next!null)
{
root.nextroot.next.next;
dfs(root.next);
}else if(root.nextnull||root.val!root.next.val)
{
dfs(root.next);
}
}
public ListNode Dfs(ListNode root)
{
dfs(root);
return root;
}
单指针求解定义一个初始为root的单指针如果该指针下一个指针指向为null则表示处理完毕若不为null且相同则该指针的next为next的next否则前进。
public ListNode singlePoint(ListNode root)
{
ListNode singleroot;
while(root!null)
{
if(root.nextnull){return root;}
if(root.valroot.next.val)
{
root.nextroot.next.next;
}else
{
rootroot.next;
}
}
return root;
}