Skip to content

Commit 632857d

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

Some content is hidden

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

63 files changed

+2524
-15
lines changed

4_sum_2.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
class Solution {
2+
public:
3+
int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) {
4+
unordered_map<int,int>mp1;
5+
6+
int i,j,sz1,sz2,sz3,sz4,ans=0,sum;
7+
sz1=A.size();
8+
sz2=B.size();
9+
sz3=C.size();
10+
sz4=D.size();
11+
if((sz1==0) || (sz2==0) || (sz3==0) || (sz4==0))
12+
return 0;
13+
for(i=0;i<sz1;i++)
14+
{
15+
for(j=0;j<sz2;j++)
16+
{
17+
mp1[A[i]+B[j]]++;
18+
}
19+
}
20+
for(i=0;i<sz3;i++)
21+
{
22+
for(j=0;j<sz4;j++)
23+
{
24+
sum=-(C[i]+D[j]);
25+
ans=ans+mp1[sum];
26+
}
27+
}
28+
return ans;
29+
}
30+
};

Add2Nos.cpp

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* struct ListNode {
4+
* int val;
5+
* ListNode *next;
6+
* ListNode(int x) : val(x), next(NULL) {}
7+
* };
8+
*/
9+
class Solution {
10+
public:
11+
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
12+
stack<int>s1;
13+
stack<int>s2;
14+
ListNode* x=l1;
15+
int sum,carry=0;
16+
while(x)
17+
{
18+
s1.push(x->val);
19+
x=x->next;
20+
}
21+
x=l2;
22+
while(x)
23+
{
24+
s2.push(x->val);
25+
x=x->next;
26+
}
27+
ListNode* val=NULL;
28+
while(!s1.empty() || !s2.empty() || carry!=0)
29+
{
30+
sum=0;
31+
if(!s1.empty())
32+
{
33+
sum=s1.top();
34+
s1.pop();
35+
}
36+
if(!s2.empty())
37+
{
38+
sum=sum+s2.top();
39+
s2.pop();
40+
}
41+
sum=sum+carry;
42+
ListNode* dummy=new ListNode(sum%10);
43+
dummy->next=val;
44+
val=dummy;
45+
carry=sum/10;
46+
}
47+
return val;
48+
}
49+
};

Add_1_linkedList.cpp

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* struct ListNode {
4+
* int val;
5+
* ListNode *next;
6+
* ListNode(int x) : val(x), next(NULL) {}
7+
* };
8+
*/
9+
class Solution {
10+
public:
11+
ListNode* plusOne(ListNode* head) {
12+
if(head==NULL)
13+
return head;
14+
ListNode* node=head;
15+
ListNode* start=NULL;
16+
while(node)
17+
{
18+
if(node->val<9)
19+
start=node;
20+
node=node->next;
21+
}
22+
if(start)
23+
{
24+
start->val=start->val+1;
25+
node=start->next;
26+
}
27+
else if(!start)
28+
{
29+
ListNode* n = new ListNode(1);
30+
n->next=head;
31+
head=n;
32+
node=head->next;
33+
//head=n;
34+
}
35+
while(node)
36+
{
37+
node->val=0;
38+
node=node->next;
39+
}
40+
return head;
41+
}
42+
};

Array+ListRotation.cpp

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
class Solution {
2+
public:
3+
void rotate(vector<int>& nums, int k) {
4+
vector<int>copy=nums;
5+
int i,sz=nums.size();
6+
for(i=0;i<sz;i++)
7+
copy[(i+k)%sz]=nums[i];
8+
nums=copy;
9+
}
10+
};
11+
12+
void rotate(vector<int>& nums, int k) {
13+
int sz=nums.size();
14+
k=k%sz;
15+
reverse(nums.begin(),nums.end()-k);
16+
reverse(nums.end()-k,nums.end());
17+
reverse(nums.begin(),nums.end());
18+
}
19+
20+
class Solution {
21+
public:
22+
ListNode* rotateRight(ListNode* head, int k)
23+
{
24+
if((head==NULL) || (head->next==NULL))
25+
return head;
26+
if(k==0)
27+
return head;
28+
int len=1,con,i;
29+
ListNode *x=head , *h1;
30+
while(x->next!=NULL)
31+
{
32+
x=x->next;
33+
len++;
34+
}
35+
x->next=head;
36+
k=k%len;
37+
for(i=0;i<len-k;i++)
38+
x=x->next;
39+
h1=x->next;
40+
x->next=NULL;
41+
return h1;
42+
}
43+
};

BinaryTreeTilt.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* struct TreeNode {
4+
* int val;
5+
* TreeNode *left;
6+
* TreeNode *right;
7+
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
8+
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
9+
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
10+
* };
11+
*/
12+
class Solution {
13+
public:
14+
int sumSubTree(TreeNode* root)
15+
{
16+
if (root == NULL)
17+
return 0;
18+
return root->val + sumSubTree(root->left) + sumSubTree(root->right);
19+
}
20+
int findTilt(TreeNode* root)
21+
{
22+
if (root == NULL)
23+
return 0;
24+
int curVal = 0;
25+
curVal = abs(sumSubTree(root->left) - sumSubTree(root->right));
26+
return curVal + findTilt(root->left) + findTilt(root->right);
27+
}
28+
};

CampusBikes.cpp

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
class Solution {
2+
public:
3+
vector<int> assignBikes(vector<vector<int>>& workers, vector<vector<int>>& bikes) {
4+
priority_queue< pair<int,pair<int,int>>, vector< pair<int,pair<int,int>> >, greater< pair< int, pair<int,int> > > >pq;
5+
int i,wor = workers.size(), bik = bikes.size(),j,x,y,dist;
6+
vector<int>visited(wor,-1);
7+
for(i=0;i<wor;i++)
8+
{
9+
x = workers[i][0];
10+
y = workers[i][1];
11+
for(j=0;j<bik;j++)
12+
{
13+
dist = abs(x-bikes[j][0]) + abs(y-bikes[j][1]);
14+
pq.push(make_pair(dist,make_pair(i,j)));
15+
}
16+
}
17+
18+
unordered_set<int>assigned;
19+
while(!pq.empty())
20+
{
21+
pair<int, pair<int,int> >fron = pq.top();
22+
pq.pop();
23+
if((visited[fron.second.first]==-1) && (assigned.count(fron.second.second)==0))
24+
{
25+
visited[fron.second.first]=fron.second.second;
26+
assigned.insert(fron.second.second);
27+
}
28+
if(assigned.size()==wor)
29+
break;
30+
}
31+
return visited;
32+
}
33+
};

ClosedIslands.cpp

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
class Solution {
2+
public:
3+
vector<vector<int>> dir = {{-1,0},{1,0},{0,1},{0,-1}};
4+
void dfs(vector<vector<int>>& grid, vector<vector<int>>& visited, int x,int y)
5+
{
6+
if((x<0)||(x>=grid.size())||(y<0)||(y>=grid[0].size())||(visited[x][y]==1)||(grid[x][y]!=0))
7+
return;
8+
visited[x][y]=1;
9+
int i;
10+
for(i=0;i<4;i++)
11+
{
12+
dfs(grid,visited,x+dir[i][0],y+dir[i][1]);
13+
}
14+
}
15+
void bfs(vector<vector<int>>& grid, vector<vector<int>>& visited, queue< pair<int,int> >& q )
16+
{
17+
int i,x,y,newx,newy;
18+
while(!q.empty())
19+
{
20+
x=q.front().first;
21+
y=q.front().second;
22+
q.pop();
23+
//cout<<x<<
24+
for(i=0;i<4;i++)
25+
{
26+
newx=x+dir[i][0];
27+
newy=y+dir[i][1];
28+
if((newx<0)||(newx>=grid.size())||(newy<0)||(newy>=grid[0].size())||(visited[newx][newy]==1)||(grid[newx][newy]!=0))
29+
continue;
30+
visited[newx][newy]=1;
31+
q.push(make_pair(newx,newy));
32+
grid[newx][newy]=1;
33+
}
34+
}
35+
}
36+
int closedIsland(vector<vector<int>>& grid) {
37+
int i,j,m=grid.size(),n,res=0,con=0;
38+
if(m==0)
39+
return res;
40+
n=grid[0].size();
41+
vector<vector<int>>visited(m,vector<int>(n,0));
42+
queue< pair<int,int> >q;
43+
for(i=0;i<m;i++)
44+
{
45+
if(grid[i][0]==0)
46+
{
47+
visited[i][0]=1;
48+
q.push(make_pair(i,0));
49+
grid[i][0]=1;
50+
}
51+
if(grid[i][n-1]==0)
52+
{
53+
visited[i][n-1]=1;
54+
q.push(make_pair(i,n-1));
55+
grid[i][n-1]=1;
56+
}
57+
}
58+
for(i=0;i<n;i++)
59+
{
60+
if((grid[0][i]==0) && (!visited[0][i]))
61+
{
62+
visited[0][i]=1;
63+
q.push(make_pair(0,i));
64+
grid[0][i]=1;
65+
}
66+
if((grid[m-1][i]==0) && (!visited[m-1][i]))
67+
{
68+
visited[m-1][i]=1;
69+
q.push(make_pair(m-1,i));
70+
grid[m-1][i]=1;
71+
}
72+
}
73+
bfs(grid,visited,q);
74+
for(i=0;i<m;i++)
75+
for(j=0;j<n;j++)
76+
visited[i][j]=0;
77+
for(i=0;i<m;i++)
78+
{
79+
for(j=0;j<n;j++)
80+
{
81+
if((grid[i][j]==0) && (!visited[i][j]))
82+
{
83+
con++;
84+
dfs(grid,visited,i,j);
85+
}
86+
}
87+
}
88+
return con;
89+
}
90+
};

ConsecutivegroupsofsizeW.cpp

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
class Solution {
2+
public:
3+
bool isNStraightHand(vector<int>& hand, int W) {
4+
priority_queue<int, vector<int>, greater<int>>pq;
5+
int i,sz=hand.size(),con=0,fron;
6+
if(sz%W!=0)
7+
return false;
8+
for(i=0;i<sz;i++)
9+
pq.push(hand[i]);
10+
vector<int>straight;
11+
while(!pq.empty())
12+
{
13+
vector<int>temp;
14+
vector<int>dump;
15+
while(!pq.empty() && temp.size()<W)
16+
{
17+
fron = pq.top();
18+
pq.pop();
19+
if((temp.size()==0) || (fron == temp.back() + 1))
20+
temp.push_back(fron);
21+
else
22+
dump.push_back(fron);
23+
}
24+
for(i=0;i<temp.size();i++)
25+
straight.push_back(temp[i]);
26+
if(temp.size()<W)
27+
return false;
28+
else
29+
{
30+
for(i=0;i<dump.size();i++)
31+
pq.push(dump[i]);
32+
}
33+
}
34+
for(i=0;i<straight.size();i++)
35+
cout<<straight[i]<<" ";
36+
return true;
37+
}
38+
};
39+
40+
41+
class Solution {
42+
public:
43+
bool isPossibleDivide(vector<int>& nums, int k) {
44+
int i,j,sz=nums.size(),fron;
45+
if(sz%k!=0)
46+
return false;
47+
map<int,int>mp;
48+
for(i=0;i<sz;i++)
49+
mp[nums[i]]++;
50+
while(!mp.empty())
51+
{
52+
auto it= mp.begin();
53+
fron = it->first;
54+
for(i=fron;i<fron+k;i++)
55+
{
56+
if(mp.find(i)==mp.end())
57+
return false;
58+
else
59+
{
60+
mp[i]--;
61+
if(mp[i]==0)
62+
mp.erase(i);
63+
}
64+
}
65+
}
66+
return true;
67+
}
68+
};

0 commit comments

Comments
 (0)