Skip to content

Commit 865da71

Browse files
author
ishan.gupta
committed
50 days coding sheet
1 parent c4e1d8a commit 865da71

File tree

5 files changed

+193
-0
lines changed

5 files changed

+193
-0
lines changed

2sum.cpp

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using namespace std;
2+
#include <iostream>
3+
#include <bits/stdc++.h>
4+
// remove above lines when running in leetcode.
5+
6+
class Solution {
7+
public:
8+
vector<int> twoSum(vector<int>& nums, int target) {
9+
unordered_map<int,int> umap;
10+
for(int i=0;i<nums.size();i++){
11+
umap[nums[i]] = i;
12+
}
13+
14+
for(int i=0;i<nums.size();i++){
15+
if(umap.find(target-nums[i]) != umap.end() && i!=umap[target-nums[i]]){
16+
return {i,umap[target-nums[i]]};
17+
}
18+
}
19+
return {};
20+
}
21+
};

3sum.cpp

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
using namespace std;
2+
#include <iostream>
3+
#include <bits/stdc++.h>
4+
// remove above lines when running in leetcode.
5+
6+
7+
class Solution {
8+
public:
9+
vector<vector<int>> threeSum(vector<int>& nums) {
10+
map<vector<int>,int> s;
11+
vector<vector<int>> ans;
12+
int len = nums.size()-1;
13+
int value1,target=0;
14+
sort(nums.begin(),nums.end());
15+
16+
for(int i=0;i<nums.size();i++){
17+
value1 = nums[i];
18+
target = target - nums[i];
19+
int left=i+1 ,right=len;
20+
while(left<right){
21+
if(nums[left]+nums[right]==target){
22+
vector<int> v({value1,nums[left],nums[right]});
23+
s[v]++;
24+
left++;
25+
right--;
26+
} else if(nums[left]+nums[right]>target){
27+
right--;
28+
} else {
29+
left++;
30+
}
31+
}
32+
target = 0;
33+
}
34+
for (auto i : s) {
35+
ans.push_back(i.first);
36+
}
37+
38+
39+
40+
// my first approach- this was right too but was giving TLE.
41+
42+
// for(int i=0;i<nums.size();i++){
43+
// value1 = nums[i];
44+
// target = target - nums[i];
45+
// unordered_map<int,int> umap;
46+
// for(int j=i+1;j<nums.size();j++){
47+
// umap[nums[j]] = j;
48+
// }
49+
// for(int j=i+1;j<nums.size();j++){
50+
// if(umap.find(target - nums[j]) != umap.end() && j!=umap[target - nums[j]]){
51+
// value2 = nums[j];
52+
// value3 = target-nums[j];
53+
// vector<int> v({value1,value2,value3});
54+
// sort(v.begin(),v.end());
55+
// // s.insert(v);
56+
// s[v]++;
57+
// }
58+
// }
59+
// target = 0;
60+
// }
61+
// for (auto i : s) {
62+
// ans.push_back(i.first);
63+
// }
64+
return ans;
65+
66+
}
67+
68+
};

4sum.cpp

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
using namespace std;
2+
#include <iostream>
3+
#include <bits/stdc++.h>
4+
// remove above lines when running in leetcode.
5+
6+
class Solution {
7+
public:
8+
vector<vector<int>> fourSum(vector<int>& nums, int target) {
9+
map<vector<int>,int> m;
10+
vector<vector<int>> vec;
11+
int len = nums.size()-1;
12+
long long int actualTarget = target, newTargetI, newTargetJ, finalTarget;
13+
int value1, value2;
14+
sort(nums.begin(),nums.end());
15+
for(int i=0;i<nums.size();i++){
16+
value1 = nums[i];
17+
newTargetI = target - nums[i];
18+
for(int j=i+1;j<nums.size();j++){
19+
value2 = nums[j];
20+
// newTargetJ = newTargetI;
21+
finalTarget = newTargetI-nums[j];
22+
int left=j+1 ,right=len;
23+
while(left<right){
24+
// cout<<"L-"<<left<<"\n";
25+
// cout<<"R-"<<right<<"\n";
26+
if(nums[left]+nums[right]==finalTarget){
27+
// cout<<"E";
28+
vector<int> v({value1,value2,nums[left],nums[right]});
29+
m[v]++;
30+
left++;
31+
right--;
32+
} else if(nums[left]+nums[right]>finalTarget){
33+
right--;
34+
// cout<<"F";
35+
} else {
36+
left++;
37+
// cout<<"G";
38+
}
39+
}
40+
41+
}
42+
target = actualTarget;
43+
}
44+
for (auto i : m) {
45+
vec.push_back(i.first);
46+
}
47+
return vec;
48+
}
49+
};

maximum_subarray.cpp

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using namespace std;
2+
#include <iostream>
3+
#include <bits/stdc++.h>
4+
// remove above lines when running in leetcode.
5+
6+
class Solution {
7+
public:
8+
int maxSubArray(vector<int>& nums) {
9+
int max1 = INT_MIN, sum=0;
10+
for(int i=0 ; i<nums.size() ;i++ ){
11+
sum+=nums[i];
12+
if(sum<0){
13+
max1 = max(max1,sum);
14+
sum = 0;
15+
} else {
16+
max1 = max(max1,sum);
17+
}
18+
}
19+
return max1;
20+
}
21+
};

sortColors.cpp

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
using namespace std;
2+
#include <iostream>
3+
#include <bits/stdc++.h>
4+
// remove above lines when running in leetcode.
5+
6+
7+
class Solution {
8+
public:
9+
void sortColors(vector<int>& nums) {
10+
int left = 0;
11+
int right = nums.size()-1;
12+
int mid = left;
13+
14+
while(mid<=right){
15+
if(nums[mid]==0){
16+
int temp = nums[mid];
17+
nums[mid] = nums[left];
18+
nums[left] = temp;
19+
left++;
20+
mid++;
21+
}
22+
else if(nums[mid]==1){
23+
mid++;
24+
}
25+
else{
26+
int temp = nums[mid];
27+
nums[mid] = nums[right];
28+
nums[right] = temp;
29+
right--;
30+
}
31+
}
32+
33+
}
34+
};

0 commit comments

Comments
 (0)