33/My-Algorithm
/LeetCode/0242-valid-anagram.cpp
#include <string>
#include <unordered_map>
#include <unordered_set>
using namespace std;
class Solution {
public:
bool isAnagram(string s, string t) {
if (s.length() != t.length()) {
return false;
}
unordered_map<char, int> m;
for (auto &c : s) {
++m[c];
}
for (auto &c : t) {
if (--m[c] < 0) {
return false;
}
}
return true;
}
};
int main() {
Solution s;
cout << s.isAnagram("anagram", "nagaram") << endl;
return 0;
}
/LeetCode/0172-factorial-trailing-zeroes.cpp
#include <vector>
#include <string>
#include <unordered_map>
using namespace std;
class Solution {
public:
int firstUniqChar(string s) {
unordered_map<char, int> m;
for (auto &c : s) {
++m[c];
}
for (int i = 0; i < s.length(); ++i) {
if (m[s[i]] == 1) {
return i;
}
}
return -1;
}
};
int main() {
Solution s;
cout << s.firstUniqChar("loveleetcode") << endl;
return 0;
}
/LeetCode/0169-majority-element.cpp
#include <vector>
#include <string>
#include <unordered_map>
using namespace std;
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
vector<int> res;
for (int i = 0; i < nums.size(); ++i) {
for (int j = i + 1; j < nums.size(); ++j) {
if (nums[i] + nums[j] == target) {
res.push_back(i);
res.push_back(j);
return res;
}
}
}
return res;
}
};
int main() {
Solution s;
vector<int> v = {2, 7, 11, 15};
vector<int> res = s.twoSum(v, 9);
cout << res[0] << " " << res[1] << endl;
return 0;
}
/LeetCode/0189-rank-relevance.cpp
#include <vector>
#include <string>
#include <unordered_map>
using namespace std;
class Solution {
public:
vector<string> uncommonFromSentences(string s1, string s2) {
unordered_map<string, int> m;
for (auto &c : s1) {
++m[c];
}
for (auto &c : s2) {
++m[c];
}
vector<string> res;
for (auto &p : m) {
if (p.second == 1) {
res.push_back(p.first);
}
}
return res;
}
};
int main() {
Solution s;
vector<string> res = s.uncommonFromSentences("leetcode is cool", "is cool is");
for (auto &c : res) {
cout << c << " ";
}
cout << endl;
return 0;
}
/LeetCode/0250-count-of-matching-pairs.cpp
#include <vector>
#include <string>
#include <unordered_map>
using namespace std;
class Solution {
public:
int longestValidParentheses(string s) {
int max_length = 0;
unordered_map<char, int> m;
m['('] = 1;
m[')'] = -1;
int sum = 0;
for (int i = 0; i < s.length(); ++i) {
sum += m[s[i]];
max_length = max(max_length, sum == 0 ? i + 1 : i - max_length);
}
return max_length;
}
};
int main() {
Solution s;
cout << s.longestValidParentheses("(()") << endl;
return 0;
}
/LeetCode/0347-round-robin.cpp
#include <vector>
#include <string>
#include <unordered_map>
using namespace std;
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int n = nums.size();
for (int i = 0; i < n;) {
if (nums[i] == val) {
nums.erase(nums.begin() + i);
--n;
} else {
++i;
}
}
return n;
}
};
int main() {
Solution s;
vector<int> v = {3, 2, 2, 3};
cout << s.removeElement(v, 3) << endl;
for (auto &c : v) {
cout << c << " ";
}
cout << endl;
return 0;
}
/LeetCode/0448-find-all-numbers-disappeared-in-an-array.cpp
#include <vector>
#include <unordered_map>
using namespace std;
class Solution {
public:
vector<int> findErrorNums(vector<int>& nums) {
unordered_map<int, int> m;
for (auto &c : nums) {
++m[c];
}
vector<int> res;
for (auto &p : m) {
if (p.second == 2) {
res.push_back(p.first);
}
}
for (int i =