题目
思路
本题的思路很简单,根据题意,给的是要删除的节点。
一般情况我们删除一个节点(cur),就会把前一个节点(pre)的下一个指针指向cur的下一个节点即可,即pre.next = cur.next
但是本题给的是要删除节点,无法访问前面的节点,因此可以下一个节点的值复制到当前节点,然后把下一个节点删除即可
代码实现
实现代码只有两行,但是这里做的是一个输入形式的,可以更直观的看到效果。
package list;
import java.util.Scanner;
/**
* Author:大鱼
* gitee:https://gitee.com/TheInit/leetcode
* csdn:
*/
public class DeleteNode {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
String[] split = s.substring(1, s.length() - 1).split(",");
int[] nums = new int[split.length];
for (int i = 0; i < nums.length; i++) {
nums[i] = Integer.parseInt(split[i]);
}
ListNode node = ListUtil.getListFromArray(nums);
ListNode cur = node;
int val = sc.nextInt();
while (cur != null) {
if (cur.val == val) {
deleteNode(cur);
}
cur = cur.next;
}
ListUtil.listToString(node);
}
public static void deleteNode(ListNode node) {
// 修改要删除节点的值为下个节点的值
node.val = node.next.val;
// 删除下个节点
node.next = node.next.next;
}
}
?
|