From 48ccf0b0d2d7dcab3a7fe0b997cd5b7570dce2ec Mon Sep 17 00:00:00 2001 From: Sweta_Kabi Date: Tue, 20 Oct 2020 16:34:43 +0530 Subject: [PATCH 1/3] Copy list with random pointers --- C++/Copy_Linkedlist_with_Random_Pointers.cpp | 37 ++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 C++/Copy_Linkedlist_with_Random_Pointers.cpp diff --git a/C++/Copy_Linkedlist_with_Random_Pointers.cpp b/C++/Copy_Linkedlist_with_Random_Pointers.cpp new file mode 100644 index 0000000..50e72e9 --- /dev/null +++ b/C++/Copy_Linkedlist_with_Random_Pointers.cpp @@ -0,0 +1,37 @@ +class Node { +public: + int val; + Node* next; + Node* random; + + Node(int _val) { + val = _val; + next = NULL; + random = NULL; + } +}; +class Solution { +public: + Node* copyRandomList(Node* head) { + unordered_map mp; + Node* copy = nullptr; + Node* original = head; + while(original != NULL) + { + copy = new Node(original->val); + mp[original] = copy; + original= original->next; + } + original = head; + while(original != NULL) + { + copy = mp[original]; + copy->next = mp[original->next]; + copy->random = mp[original->random]; + original = original->next; + + } + return mp[head]; + + } +}; \ No newline at end of file From d988594547b4410ac92f166e5bbb2020c3992a9e Mon Sep 17 00:00:00 2001 From: Sweta_Kabi Date: Tue, 20 Oct 2020 17:37:06 +0530 Subject: [PATCH 2/3] 2 Sum --- C++/2Sum.cpp | 17 +++++++++++++++++ C++/Copy_Linkedlist_with_Random_Pointers.cpp | 7 +++---- 2 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 C++/2Sum.cpp diff --git a/C++/2Sum.cpp b/C++/2Sum.cpp new file mode 100644 index 0000000..2264baf --- /dev/null +++ b/C++/2Sum.cpp @@ -0,0 +1,17 @@ +class Solution { +public: + vector twoSum(vector& nums, int target) + { + unordered_map mp; + for(int i=0;i mp; Node* copy = nullptr; Node* original = head; @@ -28,10 +29,8 @@ class Solution { copy = mp[original]; copy->next = mp[original->next]; copy->random = mp[original->random]; - original = original->next; - + original = original->next; } return mp[head]; - } }; \ No newline at end of file From fb64563bb0f287299a3746721cbc997fe58eb44c Mon Sep 17 00:00:00 2001 From: Sweta_Kabi Date: Tue, 20 Oct 2020 17:58:27 +0530 Subject: [PATCH 3/3] 4 Sum --- C++/4Sum.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 C++/4Sum.cpp diff --git a/C++/4Sum.cpp b/C++/4Sum.cpp new file mode 100644 index 0000000..32f61e7 --- /dev/null +++ b/C++/4Sum.cpp @@ -0,0 +1,36 @@ +class Solution { +public: + vector> fourSum(vector& nums, int target) + { + vector> res; + if(nums.size() < 4) return res; + set> hash; + sort(nums.begin(), nums.end()); + for(int i = 0; i < nums.size() - 2; i++) { + for(int j = i + 1; j < nums.size() - 1; j++) + { + int left = j + 1; + int right = nums.size() - 1; + while(left < right) + { + int sum = nums[i] + nums[left] + nums[right] + nums[j]; + if(sum == target && !hash.count({nums[i], nums[j], nums[left], nums[right]})) { + hash.insert({nums[i], nums[j], nums[left], nums[right]}); + res.push_back({nums[i], nums[j], nums[left], nums[right]}); + left++; + right--; + while(left < right && nums[left] == nums[left - 1]) + left++; + while(left < right && nums[right] == nums[right + 1]) + right--; + } + else if(target > sum) + left++; + else + right--; + } + } + } + return res; + } +}; \ No newline at end of file