Website Summary Files Commits Branches @commit @diff @stats
path: root / Practicum / pract05 / solutions / Task04.cpp
diff options
context:
space:
mode:
Commitf281f4124941da875a81df70b9b91b6eaf529434 (patch)
Author
 Desislava Shunina <115353472+desiish@users.noreply.github.com>
2024-11-05 17:12:04 +0200
Committer
 GitHub <noreply@github.com>
2024-11-05 17:12:04 +0200
Files7c5582db28bce2ec847e8279855584244a3ac2b3 /Practicum/pract05/solutions/Task04.cpp
Data-structures-and-algorithms-f281f4124941da875a81df70b9b91b6eaf529434.tar
Data-structures-and-algorithms-f281f4124941da875a81df70b9b91b6eaf529434.tar.gz
Data-structures-and-algorithms-f281f4124941da875a81df70b9b91b6eaf529434.zip
Parent8d143a1431e7fbc943524b3897afca0139a5f43b (diff)
Add tasks solutions
1 files changed, 52 insertions, 0 deletions
-rw-r--r--Practicum/pract05/solutions/Task04.cpp52
diff --git a/Practicum/pract05/solutions/Task04.cpp b/Practicum/pract05/solutions/Task04.cpp
new file mode 100644
index 0000000..3fc11a5
--- /dev/null
+++ b/Practicum/pract05/solutions/Task04.cpp
@@ -0,0 +1,52 @@
+/**
+ * Definition for singly-linked list.
+ * struct ListNode {
+ * int val;
+ * ListNode *next;
+ * ListNode(int x) : val(x), next(NULL) {}
+ * };
+ */
+class Solution {
+public:
+ size_t getLen(ListNode* head)
+ {
+ size_t cnt = 0;
+ while(head)
+ {
+ head = head->next;
+ cnt++;
+ }
+
+ return cnt;
+ }
+ ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
+ if(!headA || !headB)
+ return nullptr;
+
+ size_t sizeA = getLen(headA);
+ size_t sizeB = getLen(headB);
+
+ while(sizeA > sizeB)
+ {
+ headA = headA->next;
+ sizeA--;
+ }
+
+ while(sizeB > sizeA)
+ {
+ headB = headB->next;
+ sizeB--;
+ }
+
+ while(headA && headB)
+ {
+ if(headA == headB)
+ return headA;
+
+ headA = headA->next;
+ headB = headB->next;
+ }
+
+ return nullptr;
+ }
+};