Skip to content

Commit 3ff1f5c

Browse files
authored
Merge pull request larissalages#32 from jaesharma/master
added cpp solutions for leetcode problems
2 parents acb01bc + d86c4c4 commit 3ff1f5c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+2357
-0
lines changed

leetcode/cpp/Array/11.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution {
2+
public:
3+
int maxArea(vector<int>& height) {
4+
int left=0,right=height.size()-1,area,x,y,temp;
5+
while(left<right){
6+
x=right-left;
7+
y=min(height[left],height[right]);
8+
temp=x*y;
9+
if(temp>area){
10+
area=temp;
11+
}
12+
if(height[left]<height[right]){
13+
left+=1;
14+
}else{
15+
right-=1;
16+
}
17+
}
18+
return area;
19+
}
20+
};

leetcode/cpp/Array/121.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution {
2+
public:
3+
int maxProfit(vector<int>& prices) {
4+
if(!prices.size()) return 0;
5+
int profit=0,max_profit=INT_MIN,min=prices[0];
6+
for(int i=0;i<prices.size();i++){
7+
if(prices[i]<min)
8+
min=prices[i];
9+
profit=prices[i]-min;
10+
if(profit>max_profit)
11+
max_profit=profit;
12+
}
13+
return max_profit;
14+
}
15+
};

leetcode/cpp/Array/15.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
class Solution {
2+
public:
3+
vector<vector<int>> threeSum(vector<int>& nums) {
4+
vector<vector<int>> triplets;
5+
if(nums.size()<3) return triplets;
6+
vector<int> sortedNums;
7+
copy(nums.begin(),nums.end(),back_inserter(sortedNums));
8+
sort(sortedNums.begin(),sortedNums.end());
9+
int indexA,indexB,indexC,a,sum;
10+
for(int i=0;i<sortedNums.size()-2;i++){
11+
indexA=i;
12+
a=sortedNums[indexA];
13+
if(a>0) return triplets;
14+
if(i>0 && a==sortedNums[indexA-1]) continue;
15+
indexB=i+1;
16+
indexC=sortedNums.size()-1;
17+
while(indexB<indexC){
18+
sum=sortedNums[indexA]+sortedNums[indexB]+sortedNums[indexC];
19+
if(sum==0){
20+
triplets.push_back({a,sortedNums[indexB],sortedNums[indexC]});
21+
while(indexB<indexC && sortedNums[indexB]==sortedNums[indexB+1]) indexB++;
22+
while(indexC>indexB && sortedNums[indexC]==sortedNums[indexC-1]) indexC--;
23+
indexB++;
24+
indexC--;
25+
}else if(sum<0){
26+
indexB++;
27+
}else{
28+
indexC--;
29+
}
30+
}
31+
}
32+
return triplets;
33+
}
34+
};

leetcode/cpp/Array/152.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution {
2+
public:
3+
int maxProduct(vector<int>& nums)
4+
{
5+
if(!nums.size()) return 0;
6+
int mx=nums[0],mn=nums[0],ans=nums[0],x,y;
7+
for(int i=1;i<nums.size();i++){
8+
x=nums[i]*mx;
9+
y=nums[i]*mn;
10+
mx=max(nums[i],max(x,y));
11+
mn=min(nums[i],min(x,y));
12+
ans=max(ans,max(mx,mn));
13+
}
14+
return ans;
15+
}
16+
};

leetcode/cpp/Array/16.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class Solution {
2+
public:
3+
int threeSumClosest(vector<int>& nums, int target) {
4+
if(nums.size()<3) return 0;
5+
vector<int> sortedNums;
6+
copy(nums.begin(),nums.end(),back_inserter(sortedNums));
7+
sort(sortedNums.begin(),sortedNums.end());
8+
int ans,a,sum,diff,mindiff=INT_MAX,indexA,indexB,indexC;
9+
for(int i=0;i<sortedNums.size()-2;i++){
10+
indexA=i;
11+
a=sortedNums[indexA];
12+
if(indexA>0 && a==sortedNums[indexA-1]) continue;
13+
indexB=i+1;
14+
indexC=sortedNums.size()-1;
15+
while(indexB<indexC){
16+
sum=sortedNums[indexA]+sortedNums[indexB]+sortedNums[indexC];
17+
diff=abs(target-sum);
18+
if(diff==0) return sum;
19+
if(diff<mindiff){
20+
mindiff=diff;
21+
ans=sum;
22+
}
23+
if(sum<target) indexB++;
24+
else indexC--;
25+
}
26+
}
27+
return ans;
28+
}
29+
};

leetcode/cpp/Array/26.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution {
2+
public:
3+
int removeDuplicates(vector<int>& nums) {
4+
int n=nums.size();
5+
if (n<=1) return n;
6+
int j = 0;
7+
for (int i=0; i < n-1; i++)
8+
if (nums[i] != nums[i+1])
9+
nums[j++] = nums[i];
10+
11+
nums[j++] = nums[n-1];
12+
13+
return j;
14+
}
15+
};

leetcode/cpp/Array/39.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class Solution {
2+
public:
3+
void helper(vector<int>& candidates,vector<vector<int>>& ans,vector<int>& combination,int target,int start){
4+
if(target==0){
5+
ans.push_back(combination);
6+
return;
7+
}
8+
for(int i=start;i<candidates.size();i++){
9+
if(candidates[i]>target) break;
10+
combination.push_back(candidates[i]);
11+
helper(candidates,ans,combination,target-candidates[i],i);
12+
combination.pop_back();
13+
}
14+
}
15+
16+
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
17+
vector<vector<int>> ans;
18+
vector<int> combination;
19+
sort(candidates.begin(),candidates.end());
20+
helper(candidates,ans,combination,target,0);
21+
return ans;
22+
}
23+
};

leetcode/cpp/Array/40.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
class Solution {
2+
public:
3+
void helper(vector<int>& candidates,vector<int>& combination,vector<vector<int>>& ans,int target,int start){
4+
if(target==0){
5+
ans.push_back(combination);
6+
return;
7+
}
8+
for(int i=start;i<candidates.size();i++){
9+
if(candidates[i]>target) break;
10+
if(i>start && candidates[i]==candidates[i-1]) continue;
11+
combination.push_back(candidates[i]);
12+
helper(candidates,combination,ans,target-candidates[i],i+1);
13+
combination.pop_back();
14+
}
15+
}
16+
17+
vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {
18+
vector<vector<int>> ans;
19+
vector<int> combination;
20+
sort(candidates.begin(),candidates.end());
21+
helper(candidates,combination,ans,target,0);
22+
return ans;
23+
}
24+
};

leetcode/cpp/Array/48.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution {
2+
public:
3+
void swap(int *x,int *y){
4+
int temp=*x;
5+
*x=*y;
6+
*y=temp;
7+
}
8+
9+
void rotate(vector<vector<int>>& matrix) {
10+
int n=matrix.size(),temp;
11+
for(int j=0;j<(n/2);j++){
12+
for(int i=j;i<(n-1-j);i++){
13+
temp=matrix[j][i];
14+
swap(&temp,&matrix[i][n-1-j]);
15+
swap(&temp,&matrix[n-1-j][n-1-i]);
16+
swap(&temp,&matrix[n-1-i][j]);
17+
swap(&temp,&matrix[j][i]);
18+
}
19+
}
20+
}
21+
};

leetcode/cpp/Array/621.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution {
2+
public:
3+
int leastInterval(vector<char>& tasks, int n) {
4+
vector<int> count(26,0);
5+
int max_freq=0,min_units,task_count=tasks.size();
6+
for(auto elem: tasks){
7+
count[elem-'A']++;
8+
if(count[elem-'A']>max_freq) max_freq=count[elem-'A'];
9+
}
10+
min_units=(max_freq-1)*(n+1);
11+
for(int i=0;i<26;i++){
12+
if(count[i]==max_freq) min_units++;
13+
}
14+
return max(min_units,task_count);
15+
}
16+
};

0 commit comments

Comments
 (0)