Mündəricat
Problem bəyanat :
Əlaqəli Siyahıda Node Sil Leetcode Həlli – Funksiyanı yazın bir qovşaq silin tək-təkəlaqəli siyahı. Sən ... əcəksən yox -a giriş imkanı verilsin baş siyahının əvəzinə sizə giriş veriləcək silinəcək node birbaşa.
Bu zəmanətli silinəcək qovşaqdır quyruq düyünü deyil siyahıda.
Misal:
Məsələn 1
Input: head = [4,5,1,9], node = 5 Output: [4,1,9] Explanation: You are given the second node with value 5, the linked list should become 4 -> 1 -> 9 after calling your function.
Məsələn 2
Input: head = [4,5,1,9], node = 1 Output: [4,5,9] Explanation: You are given the third node with value 1, the linked list should become 4 -> 5 -> 9 after calling your function.
Məhdudiyyətlər:
İzahat:
- Verilmiş a düyün, deyil baş Əlaqədar Siyahıdan.
- Without başına daxil olmaq etməli olduğumuz siyahıdan silmək verilmiş düyün.
- Məhdudiyyətdə, verilmiş node ola bilməz quyruq Siyahısından.
Müşahidə:
- Əgər siyahının başlığı bizdə olsaydı, bu problem asanlıqla xətti vaxtda həll edilə bilərdi, lakin bizdə baş deyil, yalnız düyün var. siyahını təkrarlaya bilməz.
- İterasiya edir məhdudlaşdırılıb deməli, nəsə etməliyik yerində.
- O da verilir ki, düyün quyruq ola bilməz siyahının.
- Əgər müşahidə etsək, onda verilmiş qovşağı silə bilmirik, Çünki nodu silmək üçün əvvəlki node istinad tələb olunur.
Yanaşma:
- Yuxarıdakı müşahidədən, verilmiş nodu silmək mümkün deyil, lakin biz edə bilərik növbəti nodu silin.
- Növbəti nodu silmək lazımdırsa, bizim cari düyün olacaq növbəti nodun əvvəlki nodu.
- Ilk, verilmiş qovşaqda növbəti nodeun dəyərini köçürün.
node.val=node.next.val;
- İndi, saxlamaq gələcək istinadımız üçün növbəti node.
ListNode next= node.next.next;
- Verilmiş qovşağı əvvəlki node kimi düzəldin.
ListNode əvvəlki = qovşaq;
- İndi əvvəlki nodun növbəti nodeunu silin.
prev.next=next;
Əlaqəli Siyahıda Düyün Silinməsi üçün Kod:
Əlaqəli Siyahıda Düyün Silinməsi üçün Java Kodu
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public void deleteNode(ListNode node) { node.val=node.next.val; ListNode next= node.next.next; ListNode prev =node; prev.next=next; } }
Əlaqəli Siyahıda Node Silmək üçün C++ Kodu
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: void deleteNode(ListNode* node) { node->val=node->next->val; ListNode* next= node->next->next; ListNode* prev =node; prev->next=next; } };
Əlaqəli Siyahıda Silinən Düyün Mürəkkəblik Təhlili Leetcode Həll
Zamanın mürəkkəbliyi
O (1), daimi vaxt.
Kosmik Mürəkkəblik
O(1), sabit fəza.