成品网站1688入口网页版,全屋定制加盟哪个品牌好,邯郸网站建设恋家,蜘蛛网站长工作职责Leetcode 203 移除链表元素 准备工作1#xff09;ListNode基本结构2#xff09;初始化ListNode集合 解法一#xff1a;遍历判定解法二#xff1a;递归判定 Leetcode 203 移除链表元素
准备工作
1#xff09;ListNode基本结构
public class ListNode {public int val;pu… Leetcode 203 移除链表元素 准备工作1ListNode基本结构2初始化ListNode集合 解法一遍历判定解法二递归判定 Leetcode 203 移除链表元素
准备工作
1ListNode基本结构
public class ListNode {public int val;public ListNode next;public ListNode(int val, ListNode next) {this.val val;this.next next;}Overridepublic String toString() {ListNode node this;StringBuilder sb new StringBuilder();while (node ! null) {sb.append(node.val).append(-);node node.next;}sb.append(NULL);return sb.toString();}
}2初始化ListNode集合
public class ListNodeInit {public static ListNode getInitList() {ListNode tailf new ListNode(5, null);ListNode node4 new ListNode(4, tailf);ListNode node3 new ListNode(3, node4);ListNode node2 new ListNode(2, node3);return new ListNode(1, node2);}
}解法一遍历判定 使用两个指针s1、s2来定位链表中的数据遇到val相等时就移除对应的节点否则就依次向后移动节点 class Solution {public static void main(String[] args) {ListNode initList ListNodeInit.getInitList();System.out.println(initList);System.out.println(-----删除后-----);System.out.println(removeElements(initList, 2));}public static ListNode removeElements(ListNode head, int val) {// 构建一个哨兵节点可以避免后续的空节点、只有一个节点等特殊caseListNode node new ListNode(-1, head);ListNode s1 node;ListNode s2 node.next;while (s2 ! null) {if (s2.val val) {s1.next s2.next;} else {s1 s1.next;}s2 s2.next;}return node.next;}
}解法二递归判定 递归链表为基础分别处理val值相等和不相等的情况。 相等时即代表我们返回的head数据不包含当前节点即直接进入next节点的判定不相等时当前节点保留即head.next的关联关系依然存在即进行head.next节点的判定head.next表示不丢弃当前节点 class Solution {public static void main(String[] args) {ListNode initList ListNodeInit.getInitList();System.out.println(initList);System.out.println(-----删除后-----);System.out.println(removeElements(initList, 2));}public static ListNode removeElements(ListNode head, int val) {if (head null) {return null;}if (head.val val) {// 赋值next则代表移除一个node节点return removeElements(head.next, val);} else {// head.next可以将返回的节点进行关联head.next removeElements(head.next, val);return head;}}
}