[Leetcode]反转链表&删除排序链表中的重复元素
第八天题目,涉及的都是些基本的链表操作~不算太难😀
去旅游玩几天👻🕊🕊🕊
反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
示例 1:
1 | 输入:head = [1,2,3,4,5] |
示例 2:
1 | 输入:head = [1,2] |
示例 3:
1 | 输入:head = [] |
解题思路&题解
这题第一时间想到了递归,当操作流程在递归触底前则表示正向递归,触底后计算则表示反向递归。
这里利用了反向递归(触底后操作),得到一个链表尾开头的链表和当前节点,然后将这条链添加当前元素。
此时,node节点表示反转后的链表。
代码如下:
1 | func reverseList(head *ListNode) *ListNode { |
删除排序链表中的重复元素
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。
返回同样按升序排列的结果链表。
示例 1:
1 | 输入:head = [1,1,2] |
示例 2:
1 | 输入:head = [1,1,2,3,3] |
解题思路&题解
这题有个大前提按升序排列的链表
, 这个链表是排好序的。通过判断当前节点和下一个节点的值是否想等,相等就删除下一个节点。
代码如下:
1 | func deleteDuplicates(head *ListNode) *ListNode { |