33/LeetCode
/260. Single Number III.cpp
#include <iostream>
#include <vector>
using namespace std;
class Solution {
public:
vector<int> singleNumber(vector<int>& nums) {
int sum = 0, mask = 0;
for (int num : nums) sum ^= num;
mask = sum & (-sum);
vector<int> res;
for (int num : nums) {
if (num & mask) res.push_back(num);
}
return res;
}
};
int main() {
vector<int> nums = {1, 2, 3, 4, 5, 1, 2, 3, 4};
Solution sol;
vector<int> result = sol.singleNumber(nums);
for (int num : result) {
cout << num << " ";
}
cout << endl;
return 0;
}
/116. Populating Next Right Pointers in Each Node.cpp
#include <iostream>
#include <vector>
using namespace std;
class Solution {
public:
vector<int> postorderTraversal(TreeNode* root) {
if (!root) return {};
vector<int> res;
stack<TreeNode*> st;
st.push(root);
while (!st.empty()) {
TreeNode* node = st.top();
st.pop();
res.push_back(node->val);
if (node->left) st.push(node->left);
if (node->right) st.push(node->right);
}
reverse(res.begin(), res.end());
return res;
}
};
int main() {
// Example usage:
// Constructing a binary tree:
// 1
// / \
// 2 3
// / \ \
// 4 5 6
// \
// 7
vector<int> preorder = {1, 2, 4, 5, 3, 6, 7};
vector<TreeNode*> nodes(7);
for (int i = 0; i < nodes.size(); ++i) {
nodes[i] = new TreeNode(preorder[i]);
}
nodes[0]->left = nodes[1];
nodes[0]->right = nodes[2];
nodes[1]->left = nodes[3];
nodes[1]->right = nodes[4];
nodes[2]->right = nodes[5];
nodes[2]->left = nodes[4]->right;
nodes[4]->right = nodes[6];
nodes[6]->left = nodes[7];
Solution sol;
vector<int> result = sol.postorderTraversal(nodes[0]);
for (int num : result) {
cout << num << " ";
}
cout << endl;
return 0;
}
/201. Bitwise AND of Numbers Range.cpp
#include <iostream>
#include <vector>
using namespace std;
class Solution {
public:
vector<int> productExceptSelf(vector<int>& nums) {
vector<int> res(nums.size(), 1);
int left = 1, right = 1;
for (int i = 0; i < nums.size(); ++i) {
res[i] *= left;
left *= nums[i];
}
for (int i = nums.size() - 1; i >= 0; --i) {
res[i] *= right;
right *= nums[i];
}
return res;
}
};
int main() {
vector<int> nums = {1, 2, 3, 4};
Solution sol;
vector<int> result = sol.productExceptSelf(nums);
for (int num : result) {
cout << num << " ";
}
cout << endl;
return 0;
}
/204. Count Primes.cpp
#include <iostream>
#include <vector>
using namespace std;
class Solution {
public:
vector<int> singleNumber(vector<int>& nums) {
vector<int> res;
int a = 0, b = 0;
for (int num : nums) {
a = a ^ num;
b = (b << 1) | (a & 1);
}
res.push_back(a);
res.push_back(b ^ a);
return res;
}
};
int main() {
vector<int> nums = {4, 1, 2, 1, 2};
Solution sol;
vector<int> result = sol.singleNumber(nums);
for (int num : result) {
cout << num << " ";
}
cout << endl;
return 0;
}
/48. Rotate Image.cpp
#include <iostream>
#include <vector>
using namespace std;
class Solution {
public:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> res(numRows);
for (int i = 0; i < numRows; ++i) {
res[i].resize(i + 1);
res[i][0] = res[i][i] = 1;
for (int j = 1; j < i; ++j) {
res[i][j] = res[i - 1][j] + res[i - 1][j - 1];
}
}
return res;
}
};
int main() {
Solution sol;
vector<vector<int>> result = sol.generate(5);
for (int i = 0; i < result.size(); ++i) {
for (int j = 0; j < result[i].size(); ++j) {
cout << result[i][j