2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
p1 p2
1 -> 1 -> 2 -> 3 -> 3 -> nullp1.val == p2.val dele p2, nota p1 immutata hoc tempore
p1 p2
1 -> 2 -> 3 -> 3 -> nullp1.val != p2.val Deinde p1, p2 retrogradiuntur
p1 p2
1 -> 2 -> 3 -> 3 -> null
p1 p2
1 -> 2 -> 3 -> 3 -> nullp1.val == p2.val dele p2
p1 p2
1 -> 2 -> 3 -> nullCum p2 == null exitus loop
code
- 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 nodi prior delendus est.
Si valores ipsius p2 et p3 repetuntur, p3 retrocedere pergit, donec nodi non duplicatus cum p2 inveniatur, et p1 demonstrat ad p3 deletionem complendam.
Si valores ipsius p2 et p3 non insidunt, p1, p2, p3 ab uno loco retrorsum transferuntur et operationem praedictam continuant.
p2 vel p3 nulla est, exitus loop
Cum p2 nullus sit, exempli gratia, index coniunctus 1 1 1 nullus est
p1 p2 p3
S, 1, 1, 1, 2, 3, nullp1 p2 p3
S, 1, 1, 1, 2, 3, nullp1 p2 p3
S, 1, 1, 1, 2, 3, nullp1 p3
S, 2, 3, nullp1 p2 p3
S, 2, 3, nullp1 p2 p3
S, 2, 3, null
code
- 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;
- }