Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 26a3b0a

Browse files
authored
Merge branch 'neetcode-gh:main' into main
2 parents 9fd4028 + d9d562f commit 26a3b0a

Some content is hidden

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

50 files changed

+1233
-25
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
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+
13+
class Solution {
14+
public:
15+
vector<vector<int>> levelOrder(TreeNode* root) {
16+
queue< TreeNode* > q;
17+
q.push(root);
18+
vector<vector<int>> v;
19+
vector<int> k;
20+
TreeNode* c;
21+
int j;
22+
while(!q.empty() )
23+
{
24+
k.clear();
25+
j=q.size();
26+
for(int i=0;i<j;i++)
27+
{
28+
c=q.front();
29+
q.pop();
30+
if(c)
31+
{
32+
k.push_back(c->val);
33+
q.push(c->left);
34+
q.push(c->right);
35+
}
36+
}
37+
if(!k.empty())
38+
v.push_back(k);
39+
40+
}
41+
return v;
42+
43+
}
44+
};

cpp/11- Container with most water.cpp

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

cpp/110-Balanced-Binary-Tree.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+
15+
int getHeight(TreeNode* root, unordered_map<TreeNode*, int>& umap) {
16+
if (root==NULL) return 0;
17+
if (umap.find(root) != umap.end()) return umap[root];
18+
int res = max(getHeight(root->left, umap), getHeight(root->right, umap))+1;
19+
umap[root] = res;
20+
return res;
21+
}
22+
bool isBalanced(TreeNode* root) {
23+
unordered_map<TreeNode*, int> umap;
24+
if (root == NULL) return true;
25+
if (abs(getHeight(root->left, umap) - getHeight(root->right, umap)) > 1) return false;
26+
return isBalanced(root->left) && isBalanced(root->right);
27+
}
28+
};
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution {
2+
public:
3+
int longestConsecutive(vector<int>& nums) {
4+
unordered_set<int> hs;
5+
for (int n : nums) {
6+
hs.insert(n);
7+
}
8+
9+
int longest = 0;
10+
for (int n : nums) {
11+
// if n-1 is not in the set, the element can be the start of a sequence
12+
if (hs.find(n - 1) == hs.end()) {
13+
int length = 1;
14+
while (hs.find(n + length) != hs.end())
15+
++length;
16+
longest = max(longest, length);
17+
}
18+
}
19+
return longest;
20+
}
21+
};

cpp/136-Single-Number.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// Time complexity : O(n)
2+
// Space complexity : O(1)
3+
4+
class Solution {
5+
public:
6+
int singleNumber(vector<int>& nums) {
7+
int res = 0;
8+
for(int num : nums){
9+
res^=num;
10+
}
11+
return res;
12+
}
13+
};

cpp/141-Linked-List-Cycle.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
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+
bool hasCycle(ListNode *head) {
12+
if(!head) return 0;
13+
unordered_set<ListNode*> s;
14+
s.insert(head);
15+
ListNode * ptr=head->next;
16+
while(ptr)
17+
{
18+
if(s.find(ptr)==s.end())
19+
{
20+
s.insert(ptr);
21+
ptr=ptr->next;
22+
}
23+
else
24+
return 1;
25+
}
26+
return 0;
27+
28+
}
29+
};

cpp/15-3Sum.cpp

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
class Solution {
2+
public:
3+
vector<vector<int>> threeSum(vector<int>& nums) {
4+
sort(nums.begin(), nums.end());
5+
vector<vector<int>> res;
6+
for (int i = 0; i < nums.size(); ++i) {
7+
int a = nums[i];
8+
// triplet should not contain duplicate elements
9+
if (i > 0 && a == nums[i - 1])
10+
continue;
11+
// 2 ptr approach
12+
int l = i + 1, r = nums.size() - 1;
13+
while (l < r) {
14+
int threeSum = a + nums[l] + nums[r];
15+
if (threeSum > 0)
16+
r -= 1;
17+
else if (threeSum < 0)
18+
l += 1;
19+
else {
20+
// found triplet
21+
res.push_back({ a, nums[l], nums[r] });
22+
l += 1;
23+
// skip duplicates
24+
while (nums[l] == nums[l - 1] && l < r)
25+
l += 1;
26+
}
27+
}
28+
}
29+
return res;
30+
}
31+
};

cpp/155-Min-Stack.cpp

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
using namespace std;
2+
class MinStack {
3+
public:
4+
stack<pair<int, int>> stk;
5+
int m;
6+
7+
MinStack() {
8+
m = INT_MAX;
9+
}
10+
11+
void push(int val) {
12+
stk.push({val, min(val, stk.empty()?INT_MAX:stk.top().second)});
13+
}
14+
15+
void pop() {
16+
if(!stk.empty()) stk.pop();
17+
}
18+
19+
int top() {
20+
return stk.top().first;
21+
}
22+
23+
int getMin() {
24+
return stk.top().second;
25+
}
26+
};
27+
28+
/**
29+
* Your MinStack object will be instantiated and called as such:
30+
* MinStack* obj = new MinStack();
31+
* obj->push(val);
32+
* obj->pop();
33+
* int param_3 = obj->top();
34+
* int param_4 = obj->getMin();
35+
*/

cpp/202-Happy-Number.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/*
2+
Time Complexity: O(log n)
3+
Space Complexity: O(log n)
4+
*/
5+
6+
class Solution {
7+
public:
8+
bool isHappy(int n) {
9+
unordered_set<int> us;
10+
while (us.find(n) == us.end()) {
11+
us.insert(n);
12+
int temp = 0;
13+
while (n > 0) {
14+
int digit = n % 10;
15+
digit = digit * digit;
16+
temp += digit;
17+
n = n / 10;
18+
}
19+
n = temp;
20+
if (n == 1) {
21+
return true;
22+
}
23+
}
24+
return false;
25+
}
26+
};
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution {
2+
public:
3+
vector<int> productExceptSelf(vector<int>& nums) {
4+
int n = nums.size();
5+
vector<int> res(n);
6+
7+
// compute with prefix
8+
int prefix = 1;
9+
for (int i = 0; i < n; ++i) {
10+
res[i] = prefix;
11+
prefix *= nums[i];
12+
}
13+
// compute with posfix
14+
int postfix = 1;
15+
for (int i = n-1; i >= 0; --i) {
16+
res[i] *= postfix;
17+
postfix *= nums[i];
18+
}
19+
return res;
20+
}
21+
};

cpp/268-Missing-Number.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 missingNumber(vector<int>& nums) {
4+
int sum=0;
5+
int n=nums.size();
6+
for(auto num: nums)
7+
sum+=num;
8+
9+
return n*(n+1)/2 - sum;
10+
}
11+
};
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
class Solution {
2+
public:
3+
int lengthOfLongestSubstring(string s) {
4+
if(s.length()==1)
5+
return 1;
6+
7+
int j,max=0,count=0,found;
8+
string ss="";
9+
for(j=0;j<s.length();j++){
10+
found=ss.find(s[j]);
11+
if(found<0){
12+
count++;
13+
ss+=s[j];
14+
}else{
15+
ss.erase(0,found+1);
16+
ss+=s[j];
17+
count=ss.length();
18+
}
19+
max=std::max(max,count);
20+
}
21+
return max;
22+
}
23+
};
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Time complexity: O(log(N))
2+
// Space complexity: O(1)
3+
4+
class Solution {
5+
public:
6+
int search(vector<int>& nums, int target) {
7+
int start = 0, end = nums.size() - 1;
8+
while(start <= end){
9+
int mid = start + (end - start) / 2;
10+
if(nums[mid] == target)
11+
return mid;
12+
else if(nums[mid] >= nums[start]){
13+
if(target >= nums[start] && target < nums[mid])
14+
end = mid - 1;
15+
else
16+
start = mid + 1;
17+
}else{
18+
if(target > nums[mid] && target <= nums[end])
19+
start = mid + 1;
20+
else
21+
end = mid - 1;
22+
}
23+
}
24+
return -1;
25+
}
26+
};

cpp/347-Top-K-Frequent-Elements.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+
vector<int> topKFrequent(vector<int>& nums, int k) {
4+
unordered_map<int, int> count;
5+
for (int n : nums) {
6+
++count[n];
7+
}
8+
9+
vector<vector<int>> freq(nums.size() + 1, vector<int>());
10+
for (auto e : count) {
11+
freq[e.second].push_back(e.first);
12+
}
13+
14+
vector<int> result;
15+
for (int i = freq.size()-1; i >= 0; --i) {
16+
for (int n : freq[i]) {
17+
result.push_back(n);
18+
if (result.size() == k)
19+
return result;
20+
}
21+
}
22+
return result;
23+
}
24+
};

cpp/36- Valid-Sudoku.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
class Solution {
2+
public:
3+
bool isValidSudoku(vector<vector<char>>& board) {
4+
5+
unordered_set <int> row[9];
6+
unordered_set<int> col[9];
7+
unordered_set<int> squ[3][3];
8+
9+
for(int i=0;i<9;i++)
10+
for(int j=0;j<9;j++)
11+
{
12+
if (board[i][j]=='.')
13+
continue;
14+
else if(row[i].find(board[i][j]) !=row[i].end()
15+
|| col[j].find(board[i][j]) !=col[j].end()
16+
|| squ[i/3][j/3].find(board[i][j]) !=squ[i/3][j/3].end()
17+
)
18+
return false;
19+
else
20+
{
21+
row[i].insert(board[i][j]);
22+
col[j].insert(board[i][j]);
23+
squ[i/3][j/3].insert(board[i][j]);
24+
25+
}
26+
}
27+
return 1;}
28+
};

0 commit comments

Comments
 (0)