#include <unordered_map>
#include <vector>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @return int整型vector
*/
vector<int> FindNumsAppearOnce(vector<int>& nums) {
// write code here
int l = nums.size();
unordered_map<int, int> freqmap;
for(int n:nums){
freqmap[n]++;
}
vector<int> res;
for(auto itor:freqmap){
if(itor.second==1){
res.push_back(itor.first);
}
}
sort(res.begin(),res.end());
return res;
}
};
使用hashmap遍历数组,这个和前一道题差不多,拿到后遍历一下,然后符合条件的值插入,对结果数组排序就行
这里的问题是:
对for的范围循环了解不深刻,gpt总结
## 根本原因
1. **迭代器模式**:
for(auto itor = map.begin(); itor != map.end(); ++itor)
- `itor` 是一个迭代器对象(`std::unordered_map<...>::iterator`)
- 迭代器需要解引用才能访问元素,因此使用 `->` 运算符
- 等价于 `(*itor).first`
2. **范围for循环模式**:
for(auto itor : map)
- `itor` 是map中的元素(`std::pair<const Key, Value>`)
- 直接是元素本身,不是指针/迭代器,因此使用 `.` 运算符
还是对范围循环的理解不够深刻

京公网安备 11010502036488号