Skip to content

Commit 58c4299

Browse files
authored
Merge branch 'main' into feat/adjacent-increasing-subarrays
2 parents eada3fe + 88773f7 commit 58c4299

File tree

5 files changed

+161
-0
lines changed

5 files changed

+161
-0
lines changed

135. Candy.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+
int candy(vector<int>& ratings) {
4+
int n = ratings.size();
5+
vector<int> count(n, 1); // Step 1: Initialize with 1
6+
7+
// Step 2: Left to Right
8+
for (int i = 1; i < n; i++) {
9+
if (ratings[i] > ratings[i - 1]) {
10+
count[i] = count[i - 1] + 1;
11+
}
12+
}
13+
14+
// Step 3: Right to Left
15+
for (int i = n - 2; i >= 0; i--) {
16+
if (ratings[i] > ratings[i + 1]) {
17+
count[i] = max(count[i], count[i + 1] + 1);
18+
}
19+
}
20+
21+
// Step 4: Total candies
22+
return accumulate(count.begin(), count.end(), 0);
23+
}
24+
};
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
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+
vector<int> rightSideView(TreeNode* root) {
15+
// unordered_map<int,int>map;
16+
vector<int>ans;
17+
int level=-1;
18+
traverseRightSide(root,level,0,ans);
19+
return ans;
20+
}
21+
void traverseRightSide(TreeNode* root,int &mainLevel,int level, vector<int>&ans){
22+
if(root==NULL) return ;
23+
24+
if(mainLevel<level){
25+
ans.push_back(root->val);
26+
mainLevel=max(mainLevel,level);
27+
}
28+
29+
traverseRightSide(root->right,mainLevel,level+1,ans);
30+
traverseRightSide(root->left,mainLevel,level+1,ans);
31+
}
32+
};

3446. Sort Matrix by Diagonals.cpp

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
class Solution {
2+
public:
3+
vector<vector<int>> sortMatrix(vector<vector<int>>& grid) {
4+
vector<vector<int>> ans;
5+
vector<int> t;
6+
int cnt = 1;
7+
int j=0;
8+
for(int i=grid.size()-1;i>=0;i--){
9+
int p=i;
10+
while(j < grid.size() && p < grid.size()){
11+
t.push_back(grid[p][j]);
12+
p++;
13+
j++;
14+
}
15+
sort(t.begin(), t.end());
16+
reverse(t.begin(), t.end());
17+
ans.push_back(t);
18+
t.clear();
19+
j=0;
20+
}
21+
vector<vector<int>> a1;
22+
int r = 1;
23+
for(int k=1;k<grid.size();k++){
24+
int q = 0;
25+
int d = r;
26+
while(q < grid.size() && d < grid.size()){
27+
t.push_back(grid[q][d]);
28+
q++;
29+
d++;
30+
}
31+
sort(t.begin(), t.end());
32+
a1.push_back(t);
33+
t.clear();
34+
r++;
35+
}
36+
for(int i=0;i<a1.size();i++){
37+
ans.push_back(a1[i]);
38+
}
39+
j = grid.size()-1;
40+
int p = 0,q=0;
41+
for(int i=grid.size()-1;i>=0;i--){
42+
int r = i;
43+
while(q < ans[p].size()){
44+
grid[r][j] = ans[p][q];
45+
q++;
46+
r++;
47+
j++;
48+
}
49+
j=0;
50+
q=0;
51+
p++;
52+
}
53+
q=0;
54+
j=1;
55+
r=0;
56+
for(int i=1;i<grid.size();i++){
57+
while(q < ans[p].size()){
58+
grid[r][j] = ans[p][q];
59+
q++;
60+
r++;
61+
j++;
62+
}
63+
j=i+1;
64+
r=0;
65+
q=0;
66+
p++;
67+
}
68+
return grid;
69+
}
70+
};

57. Insert Interval.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// Leetcode insert interval solution
2+
3+
class Solution {
4+
public:
5+
vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {
6+
intervals.emplace_back(newInterval);
7+
return merge(intervals);
8+
}
9+
10+
vector<vector<int>> merge(vector<vector<int>>& intervals) {
11+
sort(intervals.begin(), intervals.end());
12+
vector<vector<int>> ans;
13+
ans.emplace_back(intervals[0]);
14+
15+
for (int i = 1; i < intervals.size(); ++i) {
16+
if (ans.back()[1] < intervals[i][0]) {
17+
ans.emplace_back(intervals[i]);
18+
} else {
19+
ans.back()[1] = max(ans.back()[1], intervals[i][1]);
20+
}
21+
}
22+
return ans;
23+
}
24+
};

96. Unique Binary Search Trees.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class Solution {
2+
public:
3+
int dp[20]{};
4+
int numTrees(int n) {
5+
if(n <= 1) return 1;
6+
if(dp[n]) return dp[n];
7+
for(int i = 1; i <= n; i++)
8+
dp[n] += numTrees(i-1) * numTrees(n-i);
9+
return dp[n];
10+
}
11+
};

0 commit comments

Comments
 (0)