员工重要性_图像渲染

举报
bug郭 发表于 2022/08/27 00:17:36 2022/08/27
1.1k+ 0 0
【摘要】 员工的重要性[员工的重要性](https://leetcode-cn.com/problems/employee-importance/)class Solution { public int DFS(Map<Integer, Employee> info, int id){ Employee curE = info.get(id); //先获取当前员工! ...

员工的重要性

[员工的重要性](https://leetcode-cn.com/problems/employee-importance/)

image-20220506143402892

class Solution {
    public int DFS(Map<Integer, Employee> info, int id){
        Employee curE = info.get(id); //先获取当前员工!
        int curSum = curE.importance; //获取当前员工重要度!
        for(int curId : curE.subordinates) {
           curSum += DFS(info, curId); //保存当前员工,和下属的重要度!
        }
       return curSum;//返回结果!
    }
public int getImportance(List<Employee> employees, int id) {
    if(employees.isEmpty()) 
        return 0;
        //将 employees存放在 HashMap中 键值对的形式,便于遍历寻找!
    Map<Integer, Employee> info = new HashMap<>();
    for(Employee e : employees)//一个个保存!
        info.put(e.id, e);
    return DFS(info, id);//深度遍历 info!
}
}

图像渲染

图像渲染

image-20220506143526261

class Solution {
    //标记 上下左右四个方向! 
    int[][] nextP = {{1,0},{-1,0},{0,-1},{0,1}};
    public int[][] floodFill(int[][] image, int sr, int sc, int newColor) {
          int row = image.length;
          int col = image[0].length;
          //保存需要改变的颜色!
          int oldColor = image[sr][sc];
          //改变该位置颜色 
          image[sr][sc] = newColor;
          for(int i = 0;i<nextP.length;i++){
              //获取下一个位置的坐标!
              int nextx = sr + nextP[i][0];
              int nexty = sc + nextP[i][1];
              if(nextx>=row||nextx<0||nexty>=col||nexty<0){
                 //越界 
                 continue;
              }
              if(image[nextx][nexty]==oldColor&&image[nextx][nexty]!=newColor){
                //下一个位置需要改变颜色!
                 floodFill(image,nextx,nexty,newColor);
              }
          }
       return image; 
    }
}

类似题型

岛屿的周长

image-20220506154354291

//思路: 如果岛屿的一条边相邻位置是水域或者边界周长就加一!
     // 就是 (nextx,nexty) 下一个位置坐标是 0 或者 越界 就加一!
class Solution {
    int[][] nextP = {{1,0},{-1,0},{0,-1},{0,1}};
    public int DSF(int[][] grid,int row,int col,int sr,int sc){
            int result = 0;//保存周长结果!
            grid[sr][sc] = 2;//标记 该位置走过!
            for(int i = 0;i < nextP.length;i++){
                int nextx = sr + nextP[i][0];
                int nexty = sc + nextP[i][1];
                if(nextx>=row||nextx<0||nexty>=col||nexty<0){
                    //越界 周长加一!
                    result++;
                    continue;
                }
                if(grid[nextx][nexty]==0){
                    //水域 周长加一!
                    result++;
                    continue;
                }
                if(grid[nextx][nexty]==1){
                    //陆地继续深度遍历!
                    result += DSF(grid,row,col,nextx,nexty);
                }
            }
        return result;

    }
    public int islandPerimeter(int[][] grid) {
            int row = grid.length;
            int col = grid[0].length;
            int result = 0;
            for(int i = 0;i< row;i++){
                for(int j = 0;j< col;j++){
                    if(grid[i][j]==1){
                       result += DSF(grid,row,col,i,j);
                    }
                }
            }
         return result;
    }
}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。