200. 岛屿数量【中等】
https://leetcode-cn.com/problems/number-of-islands/
class Solution {
public:
int ans=0;
void dfs(int x, int y, vector<vector<char>>& grid)
{
if(x<0||y<0||x>=grid.size()||y>=grid[0].size())
return;
if(grid[x][y]=='0')
return;
grid[x][y] ='0';
dfs(x+1, y, grid);
dfs(x, y+1, grid);
dfs(x-1, y, grid);
dfs(x, y-1, grid);
}
int numIslands(vector<vector<char>>& grid) {
int m=grid.size();
int n=grid[0].size();
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
if(grid[i][j]!='1')
continue;
dfs(i, j, grid);
ans++;
}
}
return ans;
}
};
46. 全排列【中等】
https://leetcode-cn.com/problems/permutations/
class Solution {
public:
vector<vector<int>> ans;
vector<int> vis;
void dfs(int cur, vector<int>tmp, vector<int> nums, vector<int> vis)
{
int sz = nums.size();
if(cur==sz-1)
{
ans.push_back(tmp);
return;
}
for(int i=0; i<sz; i++)
{
if(vis[i]==1)
continue;
tmp.push_back(nums[i]);
vis[i] = 1;
dfs(cur+1, tmp, nums, vis);
tmp.pop_back();
vis[i] = 0;
}
}
vector<vector<int>> permute(vector<int>& nums) {
vector<int>tmp;
vis.resize(nums.size());
dfs(-1, tmp, nums, vis);
return ans;
}
};
42. 接雨水【困难】
https://leetcode-cn.com/problems/trapping-rain-water/
class Solution {
public:
int trap(vector<int>& height) {
int l=0;
int r= height.size()-1;
int l_max=0;
int r_max=0;
int ans;
while(l<r)
{
l_max = max(height[l], l_max);
r_max = max(height[r], r_max);
if(l_max>r_max)
{
ans += (r_max-height[r]);
r--;
}
else
{
ans += (l_max-height[l]);
l++;
}
}
return ans;
}
};