(1) Search a 2D Matrix
class Solution {
public:
bool searchMatrix(vector<vector<int> > &matrix, int target) {
int i=0,j=matrix[0].size()-1;
while(i<matrix.size() && j>=0)
{
if(target==matrix[i][j])
return true;
if(target>matrix[i][j])
i++;
else
j--;
}
return false;
}
};
(2) Set Matrix Zeroes
class Solution {
public:
void setZeroes(vector<vector<int> > &matrix) {
int n=matrix[0].size(), m=matrix.size();
bool x[m],y[n];
memset(x, false, sizeof(x));
memset(y, false, sizeof(y));
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
if(matrix[i][j]==0)
x[i]=y[j]=true;
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
if(x[i]||y[j])
matrix[i][j]=0;
}
};
(3) Combinations
class Solution {
private:
vector<vector<int>> ret;
vector<int> tmp;
void solve(int dep, int maxDep, int n, int start){
if(dep==maxDep)
{
ret.push_back(tmp);
return;
}
for(int i=start;i<=n;i++)
{
tmp[dep]=i;
solve(dep+1,maxDep,n,i+1);
}
}
public:
vector<vector<int> > combine(int n, int k) {
tmp.resize(k);
solve(0,k,n,1);
return ret;
}
};