Technology sharing

Likou iussit coniunctum album deduplicationem

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Delete elementa duplicata in indice coniuncto et unum elementum duplicatum servant

p1 p2
1 -> 1 -> 2 -> 3 -> 3 -> null

p1.val == p2.val dele p2, nota p1 immutata hoc tempore

p1 p2
1 -> 2 -> 3 -> 3 -> null

p1.val != p2.val Deinde p1, p2 retrogradiuntur

p1 p2
1 -> 2 -> 3 -> 3 -> null
         
p1 p2
1 -> 2 -> 3 -> 3 -> null

p1.val == p2.val dele p2

p1 p2
1 -> 2 -> 3 -> null

Cum p2 == null exitus loop

code

  1. public ListNode deleteDuplicates(ListNode head) {
  2. // 链表节点 < 2
  3. if (head == null || head.next == null) {
  4. return head;
  5. }
  6. // 链表节点 >= 2
  7. ListNode p1 = head;
  8. ListNode p2;
  9. while ((p2 = p1.next) != null) {
  10. if (p1.val == p2.val) {
  11. p1.next = p2.next;
  12. } else {
  13. p1 = p1.next;
  14. }
  15. }
  16. return head;
  17. }

Non retinent elementa duplicata

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, null

p1 p2 p3
S, 1, 1, 1, 2, 3, null

p1 p2 p3
S, 1, 1, 1, 2, 3, null

p1 p3
S, 2, 3, null

p1 p2 p3
S, 2, 3, null

p1 p2 p3
S, 2, 3, null

code

  1. public ListNode deleteDuplicates(ListNode head) {
  2. if (head == null || head.next == null) {
  3. return head;
  4. }
  5. ListNode s = new ListNode(-1, head);
  6. ListNode p1 = s;
  7. ListNode p2;
  8. ListNode p3;
  9. while ((p2 = p1.next) != null && (p3 = p2.next) != null) {
  10. if (p2.val == p3.val) {
  11. while ((p3 = p3.next) != null
  12. && p3.val == p2.val) {
  13. }
  14. p1.next = p3;
  15. } else {
  16. p1 = p1.next;
  17. }
  18. }
  19. return s.next;
  20. }