내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
페이지 1 페이지 2
1 -> 1 -> 2 -> 3 -> 3 -> 널p1.val == p2.val 그런 다음 p2를 삭제합니다. 이때 p1은 변경되지 않은 상태로 유지됩니다.
페이지 1 페이지 2
1 -> 2 -> 3 -> 3 -> 널p1.val != p2.val 그런 다음 p1, p2가 뒤로 이동합니다.
페이지 1 페이지 2
1 -> 2 -> 3 -> 3 -> 널
페이지 1 페이지 2
1 -> 2 -> 3 -> 3 -> 널p1.val == p2.val 그런 다음 p2를 삭제합니다.
페이지 1 페이지 2
1 -> 2 -> 3 -> 널p2 == null일 때 루프를 종료합니다.
암호
- public ListNode deleteDuplicates(ListNode head) {
- // 链表节点 < 2
- if (head == null || head.next == null) {
- return head;
- }
- // 链表节点 >= 2
- ListNode p1 = head;
- ListNode p2;
- while ((p2 = p1.next) != null) {
- if (p1.val == p2.val) {
- p1.next = p2.next;
- } else {
- p1 = p1.next;
- }
- }
- return head;
- }
p1은 삭제할 이전 노드입니다. 각 주기마다 p2와 p3의 값을 비교합니다.
p2와 p3의 값이 반복되면 p3는 p2와 중복되지 않는 노드를 찾을 때까지 계속 뒤로 이동하고 p1은 p3을 가리키며 삭제를 완료합니다.
p2와 p3의 값이 겹치지 않으면 p1, p2, p3을 한 위치 뒤로 이동시켜 위의 동작을 계속한다.
p2 또는 p3이 null이면 루프를 종료합니다.
예를 들어 p2가 null이면 연결된 목록은 1 1 1 null입니다.
p1 p2 p3
s, 1, 1, 1, 2, 3, 널p1 p2 p3
s, 1, 1, 1, 2, 3, 널p1 p2 p3
s, 1, 1, 1, 2, 3, 널페이지 1 페이지 3
s, 2, 3, 널p1 p2 p3
s, 2, 3, 널p1 p2 p3
s, 2, 3, 널
암호
- public ListNode deleteDuplicates(ListNode head) {
- if (head == null || head.next == null) {
- return head;
- }
-
- ListNode s = new ListNode(-1, head);
- ListNode p1 = s;
- ListNode p2;
- ListNode p3;
- while ((p2 = p1.next) != null && (p3 = p2.next) != null) {
- if (p2.val == p3.val) {
- while ((p3 = p3.next) != null
- && p3.val == p2.val) {
- }
- p1.next = p3;
- } else {
- p1 = p1.next;
- }
- }
- return s.next;
- }