448. 找到所有数组中消失的数字
代码实现
class Solution {
public:
vector<int> findDisappearedNumbers(vector<int>& nums) {
// 采用哈希表存储
unordered_set<int> map_index;
for (int i = 0; i < nums.size(); i++) {
if (map_index.find(nums[i]) != map_index.end()) {
// map_index[nums[i]]++;
continue;
} else {
map_index.insert(nums[i]);
}
}
// 从哈希表找查找是否都存在
vector<int> result;
for (int i = 1; i < nums.size() + 1; i++) {
// 找到重复数中的最后一个
if (map_index.find(i) == map_index.end()) {
result.push_back(i);
}
}
return result;
}
};
心得记录:
- 是还要注意哈希表的使用,需要多加练习
496. 下一个更大元素 I
代码实现
class Solution {
public:
vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {
vector<int> result;
for (int i = 0; i < nums1.size(); i++) {
int j = 0;
// 找到相等的数
while (nums1[i] != nums2[j] && j < nums2.size()) {
j++;
}
int k = j;
int res = -1;
for (; k < nums2.size(); k++) {
if (nums2[k] > nums2[j]) {
res = nums2[k];
break;
}
}
result.push_back(res);
}
return result;
}
};
心得记录:
- 逐渐的上手了
506. 相对名次
代码实现
class Solution {
public:
vector<string> findRelativeRanks(vector<int>& score) {
vector<int> score_back = score;
sort(score.begin(), score.end());
vector<string> result;
for (int i = 0; i < score.size(); i++) {
for (int j = 0; j < score.size(); j++) {
if (score_back[i] == score[j]) {
if (score.size() - j == 1) {
result.push_back("Gold Medal");
} else if (score.size() - j == 2) {
result.push_back("Silver Medal");
} else if (score.size() - j == 3) {
result.push_back("Bronze Medal");
} else {
result.push_back(to_string(score.size() - j));
}
}
}
}
return result;
}
};
心得记录:
- 从最简单的方式入手,后面有些绕晕了