Skip to content

Commit eff3535

Browse files
diva-21tahsintunan
andauthored
Added leetcode solutions (neetcode-gh#1798)
* added leetcode questions * renamed * Rename first-missing-positive.cpp to 41-first-missing-positive.cpp * Rename word-pattern.cpp to 290-word-pattern.cpp * Rename 41-first-missing-positive.cpp to 0041-first-missing-positive.cpp * Rename 290-word-pattern.cpp to 0290-word-pattern.cpp Co-authored-by: Tahsin Tunan <[email protected]>
1 parent 06a64cd commit eff3535

3 files changed

+56
-21
lines changed

cpp/0041-first-missing-positive.cpp

+16-21
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,16 @@
1-
/*
2-
Time: O(n)
3-
Space: O(1)
4-
*/
5-
6-
class Solution {
7-
public:
8-
int firstMissingPositive(vector<int>& nums) {
9-
const int n = nums.size();
10-
11-
for (int i = 0; i < n; ++i)
12-
while (nums[i] > 0 && nums[i] <= n && nums[i] != nums[nums[i] - 1])
13-
swap(nums[i], nums[nums[i] - 1]);
14-
15-
for (int i = 0; i < n; ++i)
16-
if (nums[i] != i + 1)
17-
return i + 1;
18-
19-
return n + 1;
20-
}
21-
};
1+
class Solution {
2+
public:
3+
int firstMissingPositive(vector<int>& nums) {
4+
for(int i=0; i<nums.size(); i++){
5+
if(i+1==nums[i]) continue;
6+
int x = nums[i];
7+
while(x>=1 && x<=nums.size() && x!=nums[x-1]){
8+
swap(x, nums[x-1]);
9+
}
10+
}
11+
for(int i=0; i<nums.size(); i++){
12+
if(i+1!=nums[i]) return i+1;
13+
}
14+
return nums.size()+1;
15+
}
16+
};

cpp/0290-word-pattern.cpp

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class Solution {
2+
public:
3+
bool wordPattern(string pattern, string str) {
4+
vector<int> pat_map (26, 0);
5+
unordered_map<string,int> str_map;
6+
int i=0, n = pattern.size();
7+
istringstream ss (str);
8+
string token;
9+
10+
for(string token; ss >> token; ++i) {
11+
if(i == n || pat_map[pattern[i]-'a'] != str_map[token]) return false;
12+
13+
// 1-based indexing since map assigns 0 as a default value for keys not found.
14+
pat_map[pattern[i]-'a'] = str_map[token] = i+1;
15+
}
16+
17+
return i == n;
18+
}
19+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution {
2+
public:
3+
int countPalindromicSubsequence(string s) {
4+
vector<pair<int, int>> v(26, {-1, -1});
5+
for (int i = 0; i < s.size(); i++) {
6+
if (v[s[i] - 'a'].first == -1) v[s[i] - 'a'].first = i;
7+
else v[s[i] - 'a'].second = i;
8+
}
9+
10+
int res = 0;
11+
for (int i = 0; i < 26; i++) {
12+
if (v[i].second != -1) {
13+
unordered_set<char> tmp;
14+
for (int j = v[i].first + 1; j < v[i].second; j++) tmp.insert(s[j]);
15+
res += tmp.size();
16+
}
17+
}
18+
19+
return res;
20+
}
21+
};

0 commit comments

Comments
 (0)