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 文章被收录于专栏

记录秋招...

全部评论
手撕吗面试
点赞 回复 分享
发布于 03-01 15:19 湖南
这家风评一般都
点赞 回复 分享
发布于 03-01 23:07 北京

相关推荐

评论
1
4
分享

创作者周榜

更多
牛客网
牛客企业服务