-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy path160.Intersection of Two Linked Lists.cpp
86 lines (82 loc) · 1.83 KB
/
160.Intersection of Two Linked Lists.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/*
written by Pankaj Kumar.
country:-INDIA
*/
typedef long long ll ;
const ll INF=1e18;
const ll mod1=1e9+7;
const ll mod2=998244353;
//Add main code here
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution
{
public:
ListNode *getIntersectionNode(ListNode *head1, ListNode *head2)
{
int m = 0, n = 0;
ListNode *curr1 = head1, *curr2 = head2;
while (curr1 != NULL)
{
m++;
curr1 = curr1->next;
}
while (curr2 != NULL)
{
n++;
curr2 = curr2->next;
}
curr1 = head1, curr2 = head2;
if (m > n)
{
int diff = m - n;
while (diff)
{
curr1 = curr1->next;
diff--;
}
while (curr1 != NULL)
{
if (curr1 == curr2)
return curr1;
curr1 = curr1->next;
curr2 = curr2->next;
}
}
else
{
int diff = n - m;
while (diff)
{
curr2 = curr2->next;
diff--;
}
while (curr1 != NULL)
{
if (curr1 == curr2)
return curr1;
curr1 = curr1->next;
curr2 = curr2->next;
}
}
return NULL;
// map<ListNode*, int> mp;
// while(headA!=nullptr){
// mp[headA]++;
// headA=headA->next;
// }
// while(headB!=nullptr){
// if(mp[headB]>0){
// return headB;
// }
// headB=headB->next;
// }
// return NULL;
}
};