leetcode:83
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例1:输入: 1->1->2 输出: 1->2
示例2:输入: 1->1->2->3->3 输出: 1->2->3
我的思路:因为给出来的链表已经是有序的,所以不需要进行两次遍历来寻找相同节点。只需要定义一个新的指针,从头节点开始遍历,每个节点都判断下一个节点是否与本节点相同,相同就删除,不想同就将指针移到下一个节点继续判断,直到指针指向最后一个节点(node->next==NULL)
注意:关注测试用例,存在空链表(NULL),所以在遍历前先判断是否为空链表,如果链表为空,就不能对其进行操作,否则会报错!
leetcode:203
删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5
我的思路:本题使用知道前一节点来删除当前节点的方式进行删除,由于存在第一节点就需要删除的情况,所以需要使用构造函数新建一个节点(new ListNode)作为第一节点的前一节点。再新建指针指向“头结点”,开始遍历,检查当前节点的下一节点的值是否与给定值相同,相同则删除,否则,指针后移,直到当前节点都最后一个节点(node->next==NULL),就跳出循环,返回dummy->next(因为head有可能被删除,所以不直接返回head)
注意点同上
网友评论