2487. 从链表中移除节点 --力扣 --JAVA
2024-01-03 15:19:02
题目
给你一个链表的头节点?
head
?。移除每个右侧有一个更大数值的节点。
返回修改后链表的头节点?
head
?。
解题思路
- 移除每个右侧有一个更大数值的节点,所以可以利用深度遍历,从后往前进行比较;
- 创建变量max来表示当前右侧的最大值;
- 将最后节点的值赋值给max;
- 若当前节点的值小于当前节点则移除,否则修改max为当前节点的值,链表是单向的,直接移除当前节点不好移除,可以将下个节点的值和next赋值给当前节点,即用下个节点取代当前节点。
代码展示
class Solution {
private int max = 0;
public ListNode removeNodes(ListNode head) {
dfs(head);
return head;
}
private void dfs(ListNode root){
if(root == null){
return;
}
dfs(root.next);
if(root.val < max){
root.val = root.next.val;
root.next = root.next.next;
} else {
max = root.val;
}
}
}
文章来源:https://blog.csdn.net/qq_45794129/article/details/135360051
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!