- 知识点:链表,链表节点的删除
- 题面文字分析:题目要求是删除链表中值大于前后的节点,并且首尾节点可以不用删除。思路很清晰,从第二个节点遍历即可,并且判断当前节点的next节点不为空即可。只需两个变量,当前节点curr与前置节点prev,每次循环,将这两个变量向后移动即可
- 本题使用编程语言:Java
- 本题示例代码如下:
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* public ListNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode deleteNodes (ListNode head) {
// write code here
ListNode prev = head;
ListNode curr = head.next;
while(curr != null) {
if(curr.next != null) {
// 判断当前节点是否大于前后节点
if(curr.val > prev.val && curr.val > curr.next.val) {
// 将前节点的next指向当前节点的next将当前节点删除
prev.next = curr.next;
}
}
// 重新赋值参数
prev = curr;
curr = curr.next;
}
return head;
}
}