목적: 연결된 목록 요소 제거
(학습 동영상 공유: java 교육 동영상)
문제 소개:
연결된 목록에서 주어진 값 *"val*"과 동일한 모든 노드를 삭제합니다.
설명 예:
示例: 输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5
문제 해결 아이디어:
하나는 센티넬 노드를 기반으로 하고 다른 하나는 Java 컬렉션을 기반으로 하며 본질적으로 동일합니다.
프로그램 구현:
import java.util.*; public class RemoveElementsTest3 { public static void main(String[] args) { ListNode l1 = new ListNode(1); ListNode l2 = new ListNode(2); ListNode l3 = new ListNode(6); ListNode l4 = new ListNode(3); ListNode l5 = new ListNode(4); ListNode l6 = new ListNode(5); ListNode l7 = new ListNode(6); l1.next = l2; l2.next = l3; l3.next = l4; l4.next = l5; l5.next = l6; l6.next = l7; ListNode listNode = removeElements2(l1, 6); System.out.println("listNode = " + listNode); } public static ListNode removeElements(ListNode head, int val) { ListNode dummyNode = new ListNode(0); ListNode currentNode = dummyNode; while (head != null) { if (head.val != val) { currentNode.next = head; currentNode = currentNode.next; } head = head.next; } currentNode.next = null; return dummyNode.next; } public static ListNode removeElements2(ListNode head, int val) { List<Integer> list = new LinkedList<>(); while (head != null) { list.add(head.val); head = head.next; } List<Integer> tempList = new ArrayList<>(); tempList.add(val); list.removeAll(tempList); ListNode dummyNode = new ListNode(0); ListNode tempNode = dummyNode; for (int i = 0, size = list.size(); i < size; i++) { ListNode listNode = new ListNode(list.get(i)); tempNode.next = listNode; tempNode = tempNode.next; } return dummyNode.next; } }
요약:
사실 제가 이 글을 쓸 때 , 전체 프로그램의 구현 로직을 살펴보면 이해하기 쉽다고 생각합니다. 추론해야 할 어려운 점은 주어진 프로그램을 더 디버깅하고 출력되는 내용을 보면 됩니다. 매번 성공적인 작업 후에 출력됩니다.
관련 권장 사항: Java 입문 튜토리얼
위 내용은 Java는 연결된 목록에서 요소를 제거하는 작업을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!