voiddfs(vector<vector<char>>& grid, int x, int y) { int next[4][2] = { {0, 1}, {1, 0}, {0, -1}, {-1, 0} }; grid[x][y] = '0'; for(int i = 0; i < 4; i++) { int nx = x + next[i][0]; int ny = y + next[i][1]; if(nx >= 0 && nx < grid.size() && ny >= 0 && ny < grid[0].size() && grid[nx][ny] == '1') dfs(grid, nx, ny); }
}
intnumIslands(vector<vector<char>>& grid){ if(grid.empty() || grid[0].empty()) return0; int res = 0; int m = grid.size(), n = grid[0].size(); for(int i = 0; i < m; i++) for(int j = 0; j < n; j++) if(grid[i][j] == '1') { res++; dfs(grid, i, j); }
vector<int> singleNumber(vector<int>& nums){ int s = 0; for(auto x : nums) s ^= x; int k = 0; while( !(s >> k & 1) ) k++; int s1 = 0, s2 = 0; for(auto x : nums) if(x >> k & 1) s1 ^= x; else s2 ^= x; returnvector<int>({s1, s2}); }
代码2
1 2 3 4 5 6 7 8 9 10 11 12 13
vector<int> singleNumber(vector<int>& nums){ int s = 0; for(auto x : nums) s ^= x; int k = 0; while( !(s >> k & 1) ) k++; int s1 = 0; for(auto x : nums) if(x >> k & 1) s1 ^= x; returnvector<int>({s1, s ^ s2}); }