LeetCode 2487.从链表中移除节点
题目:
给你一个链表的头节点 head
。
移除每个右侧(右侧所有)有一个更大数值的节点。
返回修改后链表的头节点 head
。
思路:
代码:
class Solution {
public ListNode removeNodes(ListNode head) {
head = reverseList(head);
ListNode cur = head;
while (cur.next != null) {
if (cur.val > cur.next.val) {
cur.next = cur.next.next;
} else {
cur = cur.next;
}
}
return reverseList(head);
}
private ListNode reverseList(ListNode head) {
ListNode pre = null, cur = head;
while (cur != null) {
ListNode nxt = cur.next;
cur.next = pre;
pre = cur;
cur = nxt;
}
return pre;
}
}
性能:
时间复杂度o(n)
空间复杂度o(1)