leetcode的题目83、203

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)

注意点同上

你可能感兴趣的:(leetcode的题目83、203)