89Trillion 春招 java 笔试
开着腾讯会议,写两道leetcode的题 :
1 LC547 . 省份数量
class Solution {
public:
int ans = 0 , n ;
vector<vector<int>> g ;
vector<bool> st ;
void bfs(int i){
st[i] = true ;
for(int j : g[i]){
if(st[j]==false){
st[j] = true ;
bfs(j) ;
}
}
}
int findCircleNum(vector<vector<int>>& nt) {
n = nt.size() ;// 200
g.resize(n+1) ;
st.resize(n+1) ;
for(int i=0;i<n;i++){// 建图
st[i+1] = false ;// 没访问过
// i->j ;
for(int j=0;j<n&&j!=i;j++){
if(nt[i][j]==1){
g[i+1].push_back(j+1) ;
g[j+1].push_back(i+1) ;
}
}
}
for(int i=1;i<=n;i++){
if(st[i]==false){
bfs(i) ;
ans ++ ;
}
}
return ans ;
}
};
当场写的,有时间限制 , 属于是想到什么写什么了 , 一个简单的bfs ,当然dfs也可以
2 . 529 扫雷游戏
看了很久题目才看懂 :
int xx[] = {-1,0,1,-1,1,-1,0,1} ;
int yy[] = {-1,-1,-1,0,0,1,1,1} ;
class Solution {
public:
int n , m ;
vector<vector<char>> ans ;
void fs(int x ,int y){
if(ans[x][y]=='M'){
ans[x][y] = 'X' ;
}else if(ans[x][y]=='E'){
// 有无相邻地雷
int cnt = 0 ;
for(int j=0;j<8;j++){// 求相邻的地雷数
int nx = x+xx[j] , ny = y+yy[j] ;
if(nx<0||nx>=m||ny<0||ny>=n) continue ;
if(ans[nx][ny]=='M'||ans[nx][ny]=='X') cnt ++ ;
}
if(cnt>0) ans[x][y] = (char)(cnt+'0') ;
else {// 没有xl
ans[x][y] = 'B' ;
for(int j=0;j<8;j++){
int nx = x+xx[j] , ny = y+yy[j] ;
if(nx<0||nx>=m||ny<0||ny>=n) continue ;
fs(nx,ny) ;
}
}
}else {
return ;
}
}
vector<vector<char>> updateBoard(vector<vector<char>>& a, vector<int>& ck) {
ans = a ;
m = ans.size() ; n = ans[0].size() ;
int x = ck[0] , y = ck[1] ;
fs(x,y) ;
return ans ;
}
};
#软件开发笔面经#秋招joker 文章被收录于专栏
记录秋招...

SHEIN希音公司福利 370人发布