Teknologian jakaminen

JAVA-oppiminen - harjoittele Javaa "linkitettyjen luetteloelementtien poistamisen" toteuttamiseen

2024-07-12

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

kysymys:

Kun otetaan huomioon linkitetyn luettelon pääsolmun pää ja kokonaisluku val, poista linkitetystä luettelosta kaikki solmut, jotka täyttävät Node.val == val, ja palauta uusi pääsolmu.

Esimerkki 1:

Syöte: head = [1,2,6,3,4,5,6], val = 6
Tulos: [1,2,3,4,5]
Esimerkki 2:

Syöttö: head = [], val = 1
Lähtö: []
Esimerkki 3:

Syöttö: head = [7,7,7,7], val = 7
Lähtö: []
vihje:

Luettelon solmujen määrä on alueella [0, 104]
1 <= Node.val <= 50
0 <= arvo <= 50

Vastausideoita:

Seuraavassa on koodi, joka käyttää Javaa ratkaisemaan ongelman, joka liittyy elementtien poistamiseen linkitetystä luettelosta:

  1. class ListNode {
  2. int val;
  3. ListNode next;
  4. ListNode(int val) {
  5. this.val = val;
  6. }
  7. }
  8. public class RemoveLinkedListElements {
  9. public ListNode removeElements(ListNode head, int val) {
  10. // 创建一个虚拟头节点,方便处理头节点可能被删除的情况
  11. ListNode dummy = new ListNode(0);
  12. dummy.next = head;
  13. ListNode curr = dummy;
  14. while (curr.next!= null) {
  15. if (curr.next.val == val) {
  16. curr.next = curr.next.next;
  17. } else {
  18. curr = curr.next;
  19. }
  20. }
  21. return dummy.next;
  22. }
  23. public static void main(String[] args) {
  24. // 构建链表
  25. ListNode head = new ListNode(1);
  26. ListNode node2 = new ListNode(2);
  27. ListNode node3 = new ListNode(6);
  28. ListNode node4 = new ListNode(3);
  29. ListNode node5 = new ListNode(4);
  30. ListNode node6 = new ListNode(5);
  31. ListNode node7 = new ListNode(6);
  32. head.next = node2;
  33. node2.next = node3;
  34. node3.next = node4;
  35. node4.next = node5;
  36. node5.next = node6;
  37. node6.next = node7;
  38. RemoveLinkedListElements solution = new RemoveLinkedListElements();
  39. ListNode newHead = solution.removeElements(head, 6);
  40. // 打印移除指定值后的链表
  41. while (newHead!= null) {
  42. System.out.print(newHead.val + " ");
  43. newHead = newHead.next;
  44. }
  45. }
  46. }

Tämän koodin idea on: luo virtuaalinen pääsolmunukke ', osoita sen 'seuraava' osoitin alkuperäisen linkitetyn luettelon pääsolmuun 'head'. Kulje sitten linkitetty luettelo silmukan läpi, ja kun kohtaat solmun, jonka arvo on yhtä suuri kuin "val", se poistetaan linkitetystä luettelosta. Lopuksi palautetaan 'dummy':n 'seuraava' solmu, joka on uuden linkitetyn listan pääsolmu määritetyn arvon solmun poistamisen jälkeen.
(Artikkeli on tiivistelmä ja viittaus joistakin kirjoittajan henkilökohtaisista kokemuksista Java-oppimisprosessissa. Jos on sopimattomia tai vääriä paikkoja, kritisoi ja korjaa ne. Teemme kovasti töitä niiden korjaamiseksi. Jos on rikkomuksia , ota yhteyttä kirjoittajaan viestin poistamiseksi.)