做网站如何抓住客户的需求,app开发公司需要多少人,网站登录窗口怎么做,福州直播app开发公司链接直达#xff1a;
保留重复元素
不保留重复元素
题目#xff1a;
1:
给定一个已排序的链表的头 head #xff0c; 删除所有重复的元素#xff0c;使每个元素只出现一次 。返回 已排序的链表 。示例 1#xff1a;输入#xff1a;head [1,1,2]
输出#xff1a;[1…链接直达
保留重复元素
不保留重复元素
题目
1:
给定一个已排序的链表的头 head 删除所有重复的元素使每个元素只出现一次 。返回 已排序的链表 。示例 1输入head [1,1,2]
输出[1,2]
示例 2输入head [1,1,2,3,3]
输出[1,2,3]提示链表中节点数目在范围 [0, 300] 内
-100 Node.val 100
题目数据保证链表已经按升序 排列
2:
给定一个已排序的链表的头 head 删除原始链表中所有重复数字的节点只留下不同的数字 。返回 已排序的链表 。示例 1输入head [1,2,3,3,4,4,5]
输出[1,2,5]
示例 2输入head [1,1,1,2,3]
输出[2,3]提示链表中节点数目在范围 [0, 300] 内
-100 Node.val 100
题目数据保证链表已经按升序 排列
1题解
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/
class Solution {public ListNode deleteDuplicates(ListNode head) {if (head null || head.next null) {return head;}ListNode dummy new ListNode(0);dummy.next head;ListNode prev dummy;ListNode curr head;while (curr ! null) {// 找到当前值与下一个值不同的节点while (curr.next ! null curr.val curr.next.val) {curr curr.next;}prev.nextcurr;prevprev.next;curr curr.next;}return dummy.next;}
}
2题解
class Solution {public ListNode deleteDuplicates(ListNode head) {if (head null || head.next null) {return head;}ListNode dummy new ListNode(0);dummy.next head;ListNode prev dummy;ListNode curr head;while (curr ! null) {// 找到当前值与下一个值不同的节点while (curr.next ! null curr.val curr.next.val) {curr curr.next;}// 如果当前节点的下一个节点与当前节点的值不同,则将当前节点连接到previf (prev.next curr) {prev curr;} else {// 否则跳过所有重复的节点prev.next curr.next;}curr curr.next;}return dummy.next;}
}
至于具体两者有什么区别呢第一道算法题是保留了重复元素也就是最后的结果是链表中每个出现的数据都是唯一的而第二道算法题则是去掉了重复的数据只保留了只出现过一次的数据。
两道题解的不同之处是
第一道 prev.nextcurr;prevprev.next;curr curr.next;
第二道
// 如果当前节点的下一个节点与当前节点的值不同,则将当前节点连接到previf (prev.next curr) {prev curr;} else {// 否则跳过所有重复的节点prev.next curr.next;}
也就是第一道是prev的下一个节点直接指向了重复节点而第二道则是如果判断当前节点不唯一的话就直接指向了重复节点的下一个节点。 近日总结下下周考试难受还是建议预备大学生们当你选择的专业涉及到技术需要下载各种技术软件的话电脑系统还是选择windows比较好有不少技术软件居然不支持mac。