Skip to content

Commit dada6f3

Browse files
authored
Add files via upload
1 parent 632857d commit dada6f3

23 files changed

+1070
-8
lines changed

Diff for: AddBoldTag.cpp

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
class Solution {
2+
public:
3+
string boldWords(vector<string>& words, string S) {
4+
int i,j,sz=words.size(),len=S.length(),start,end,k,len1;
5+
vector<int>flag(len+1,0);
6+
string temp;
7+
for(i=0;i<sz;i++)
8+
{
9+
temp=words[i];
10+
len1=temp.length();
11+
for(j=0;j<len;j++)
12+
{
13+
if(S.find(temp,j)!=string::npos)
14+
{
15+
start=S.find(temp,j);
16+
end=start+len1-1;
17+
for(k=start;k<=end;k++)
18+
flag[k]=1;
19+
}
20+
else
21+
break;
22+
}
23+
}
24+
int status=0;
25+
temp="";
26+
for(i=0;i<len;i++)
27+
{
28+
if((flag[i]==1) && (status==0))
29+
{
30+
temp=temp+"<b>";
31+
status=1;
32+
}
33+
else if((status==1) && (flag[i]==0))
34+
{
35+
temp=temp+"</b>";
36+
status=0;
37+
}
38+
temp=temp+S[i];
39+
}
40+
if(status)
41+
temp=temp+"</b>";
42+
/*
43+
i=0;
44+
while(i<len)
45+
{
46+
if(flag[i]==0)
47+
{
48+
temp=temp+s[i];
49+
i++;
50+
}
51+
else
52+
{
53+
temp=temp+"<b>";
54+
j=i;
55+
while((j<len) && (flag[j]==1))
56+
temp=temp+s[j++];
57+
temp=temp+"</b>";
58+
i=j;
59+
}
60+
}
61+
*/
62+
return temp;
63+
}
64+
};

Diff for: AdvantageShuffle.cpp

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
class Solution {
2+
public:
3+
vector<int> advantageCount(vector<int>& A, vector<int>& B) {
4+
int i=0,sz=A.size(),j=0,sz1;
5+
vector<int>Bcopy = B;
6+
sort(A.begin(),A.end());
7+
sort(Bcopy.begin(),Bcopy.end());
8+
vector<int>res(sz);
9+
unordered_map<int, vector<int>>mp;
10+
queue<int>q;
11+
while(i<sz)
12+
{
13+
if(A[i]>Bcopy[j])
14+
{
15+
mp[Bcopy[j]].push_back(A[i]);
16+
i++;
17+
j++;
18+
}
19+
else
20+
{
21+
q.push(A[i]);
22+
i++;
23+
}
24+
}
25+
for(i=0;i<sz;i++)
26+
{
27+
if(mp.find(B[i])==mp.end())
28+
{
29+
res[i]=q.front();
30+
q.pop();
31+
}
32+
else
33+
{
34+
sz1=mp[B[i]].size();
35+
res[i]=mp[B[i]][sz1-1];
36+
mp[B[i]].pop_back();
37+
// res[i]=mp[B[i]][0];
38+
// mp[B[i]].pop_front();
39+
if(mp[B[i]].size()==0)
40+
mp.erase(B[i]);
41+
}
42+
}
43+
return res;
44+
}
45+
};

Diff for: ArithmeticSlices.cpp

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
class Solution {
2+
public:
3+
int numberOfArithmeticSlices(vector<int>& A) {
4+
int sz=A.size(),left,right,second,d,con=0,k,flag;
5+
for(left=0;left<sz-2;left++)
6+
{
7+
second=left+1;
8+
d=A[second]-A[left];
9+
for(right=left+2;right<sz;right++)
10+
{
11+
flag=0;
12+
for(k=left+1;k<=right;k++)
13+
{
14+
if(A[k]-A[k-1]!=d)
15+
{
16+
flag=1;
17+
break;
18+
}
19+
}
20+
if(!flag)
21+
con++;
22+
}
23+
}
24+
for(left=0;left<sz-2;left++)
25+
{
26+
second=left+1;
27+
d=A[second]-A[left];
28+
for(right=left+2;right<sz;right++)
29+
{
30+
if(A[right]-A[right-1]!=d)
31+
break;
32+
else
33+
con++;
34+
}
35+
}
36+
vector<int>dp(sz+1,0);
37+
for(left=2;left<sz;left++)
38+
{
39+
if(A[left]-A[left-1] == A[left-1]-A[left-2])
40+
{
41+
dp[left]=1+dp[left-1];
42+
con=con+dp[left];
43+
}
44+
}
45+
return con;
46+
}
47+
};

Diff for: CatalanNumber.cpp

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class Solution {
2+
public:
3+
int numTrees(int n) {
4+
5+
vector<int>catalan(n+1,1);
6+
int i,temp,j;
7+
for(i=2;i<=n;i++)
8+
{
9+
temp=0;
10+
for(j=0;j<i;j++)
11+
{
12+
temp=temp + catalan[j]*catalan[i-j-1];
13+
}
14+
catalan[i] = temp;
15+
}
16+
return catalan[n];
17+
18+
long long int C=1,i;
19+
for(i=0;i<n;i++)
20+
C = C*(2*(2*i + 1))/(i+2);
21+
return int(C);
22+
}
23+
};

Diff for: CombinationSum1&2.cpp

+188
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
class Solution {
2+
public:
3+
void backtrack(vector<int>& candidates,int target,vector<int>& ans,vector<vector<int>>& res,int begin)
4+
{
5+
if(target<0)
6+
return;
7+
if(target==0)
8+
{
9+
res.push_back(ans);
10+
return;
11+
}
12+
int i,sz=candidates.size(),sum=0;
13+
//for(i=begin;((i<sz) && (target>=candidates[i]));i++)
14+
for(i=begin;i<sz;i++)
15+
{
16+
ans.push_back(candidates[i]);
17+
backtrack(candidates,target-candidates[i],ans,res,i);
18+
ans.pop_back();
19+
}
20+
}
21+
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
22+
vector<vector<int>>res;
23+
vector<int>ans;
24+
// sort(candidates.begin(),candidates.end());
25+
int i,sz=candidates.size();
26+
if(sz==0)
27+
return res;
28+
backtrack(candidates,target,ans,res,0);
29+
return res;
30+
}
31+
};
32+
33+
class Solution {
34+
public:
35+
void backtrack(vector<int>& candidates,int target,vector<int>& ans,vector<vector<int>>& res,int begin)
36+
{
37+
if(target<0)
38+
return;
39+
if(target==0)
40+
{
41+
res.push_back(ans);
42+
return;
43+
}
44+
int i,sz=candidates.size(),sum=0;
45+
//for(i=begin;((i<sz) && (target>=candidates[i]));i++)
46+
for(i=begin;i<sz;i++)
47+
{
48+
if((i==begin) || (candidates[i]==candidates[i-1]))
49+
{
50+
ans.push_back(candidates[i]);
51+
backtrack(candidates,target-candidates[i],ans,res,i+1);
52+
ans.pop_back();
53+
}
54+
}
55+
}
56+
vector<vector<int>> combinationSum(vector<int>& candidates, int target) {
57+
vector<vector<int>>res;
58+
vector<int>ans;
59+
sort(candidates.begin(),candidates.end());
60+
int i,sz=candidates.size();
61+
if(sz==0)
62+
return res;
63+
backtrack(candidates,target,ans,res,0);
64+
return res;
65+
}
66+
};
67+
68+
class Solution {
69+
public:
70+
void permute(vector<int>& nums,int begin,vector<int>& ans,vector<vector<int>>& res)
71+
{
72+
res.push_back(ans);
73+
int i,sz=nums.size();
74+
for(i=begin;i<sz;i++)
75+
{
76+
ans.push_back(nums[i]);
77+
permute(nums,i+1,ans,res);
78+
ans.pop_back();
79+
}
80+
}
81+
vector<vector<int>> subsets(vector<int>& nums) {
82+
int i,sz=nums.size();
83+
vector<int>ans;
84+
vector<vector<int>>res;
85+
permute(nums,0,ans,res);
86+
return res;
87+
}
88+
};
89+
90+
class Solution {
91+
public:
92+
void permute(vector<int>& nums,int begin,vector<int>& ans,vector<vector<int>>& res)
93+
{
94+
int i,sz=nums.size();
95+
res.push_back(ans);
96+
for(i=begin;i<sz;i++)
97+
{
98+
if((i==begin) || (nums[i]!=nums[i-1]))
99+
{
100+
ans.push_back(nums[i]);
101+
permute(nums,i+1,ans,res);
102+
ans.pop_back();
103+
}
104+
}
105+
}
106+
vector<vector<int>> subsetsWithDup(vector<int>& nums)
107+
{
108+
int i,sz=nums.size();
109+
vector<int>ans;
110+
vector<vector<int>>res;
111+
sort(nums.begin(),nums.end());
112+
permute(nums,0,ans,res);
113+
return res;
114+
}
115+
};
116+
117+
class Solution {
118+
public:
119+
void backtrack(vector<int>& temp,vector<int>& ans,vector<vector<int>>& res,int begin,int k)
120+
{
121+
if(k==0)
122+
{
123+
res.push_back(ans);
124+
return;
125+
}
126+
int i,sz=temp.size();
127+
for(i=begin;i<sz;i++)
128+
{
129+
ans.push_back(temp[i]);
130+
backtrack(temp,ans,res,i+1,k-1);
131+
ans.pop_back();
132+
}
133+
}
134+
vector<vector<int>> combine(int n, int k)
135+
{
136+
vector<vector<int>>res;
137+
if(k==0)
138+
return res;
139+
vector<int>temp;
140+
for(int i=1;i<=n;i++)
141+
temp.push_back(i);
142+
vector<int>ans;
143+
backtrack(temp,ans,res,0,k);
144+
return res;
145+
}
146+
};
147+
148+
class Solution {
149+
public:
150+
void backtrack(int start,int end,int n,string temp,vector<string>& ans)
151+
{
152+
if(temp.length()==2*n)
153+
{
154+
ans.push_back(temp);
155+
return;
156+
}
157+
if(start<n)
158+
backtrack(start+1,end,n,temp+"(",ans);
159+
if(end<start)
160+
backtrack(start,end+1,n,temp+")",ans);
161+
}
162+
vector<string> generateParenthesis(int n) {
163+
int start=0,end=0;
164+
string temp="";
165+
vector<string>ans;
166+
backtrack(start,end,n,temp,ans);
167+
return ans;
168+
}
169+
};
170+
171+
class Solution {
172+
public:
173+
int rangeSumBST(TreeNode* root, int L, int R) {
174+
if(root==NULL)
175+
return 0;
176+
return traverse(root,L,R);
177+
}
178+
int traverse(TreeNode* root,int L,int R)
179+
{
180+
if(root==NULL)
181+
return 0;
182+
if(root->val>R)
183+
return traverse(root->left,L,R);
184+
if(root->val<L)
185+
return traverse(root->right,L,R);
186+
return root->val + traverse(root->left,L,R) + traverse(root->right,L,R);
187+
}
188+
};

0 commit comments

Comments
 (0)