class Solution {
public:
void setZeroes(vector<vector<int>>& matrix) {
int m=matrix.size();
int n=matrix[0].size();
unordered_set<int> row;
unordered_set<int> col;
//依次初始化来装0元素的行和列
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(matrix[i][j] == 0){
row.insert(i),col.insert(j);
}
}
}
//找到行或列存在的下标号并存起来
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(row.count(i) || col.count(j))
matrix[i][j]=0;
}
}
}
};
std::unordered_set
是 C++ 标准库中的一个容器,用于存储一组不重复的元素,它的主要特点是快速的查找操作。unordered_set
是基于哈希表(hash table)实现的,因此插入、查找和删除元素的平均时间复杂度都是常数时间 O(1)
unordered_set的一些用法与特点:
-
不重复的元素集合:
unordered_set
存储一组不重复的元素,每个元素在集合中只出现一次。 -
哈希表实现:
unordered_set
使用哈希表数据结构来存储元素,这使得查找元素的速度非常快。 -
无序性:
unordered_set
不保留元素的插入顺序,元素的顺序是不确定的。 -
插入和删除: 可以使用
insert()
方法插入元素,使用erase()
方法删除元素。 -
查找: 使用
find()
方法来查找元素,它会返回一个迭代器,如果元素存在,则迭代器指向该元素,否则指向集合的末尾。 -
大小: 使用
size()
方法来获取集合中元素的数量。