20201015:力扣第210场周赛题解(上)

力扣第210场周赛题解上

题目

    1. 括号的最大嵌套深度
      在这里插入图片描述
    1. 最大网络秩

在这里插入图片描述

思路与算法

  1. 第一题典型的栈数据结构求最大栈长的题目
  2. 第二题是一个经典的出入度题目,本题更加简单,统计每个点的出度,然后将最长的两个出度表相加,减去其中重复的部分即可。这个重复的部分就是互相连接的路径。注意书写即可,用嵌套list也行,list套set也行,map也行,数据结构随意。

代码实现

    1. 括号的最大嵌套深度
class Solution {
    
    
    public int maxDepth(String s) {
    
    
         Stack<Character> stack = new Stack<>();
         int ans = 0;
         char[] ch = s.toCharArray();
         if (ch.length == 0)
            return 0;
         int cnt = 0;
         for (int i = 0; i < ch.length; i++) {
    
    
             if (ch[i] == '(') {
    
    
                 stack.push(ch[i]);
             }
             if (ch[i] == ')') {
    
    
                 stack.pop();
             }
             ans = Math.max(ans,stack.size());
         }
         return ans;
    }
}
    1. 最大网络秩
class Solution {
    
    
    public int maximalNetworkRank(int n, int[][] roads) {
    
    
        
        List<Set<Integer>> list = new ArrayList<>();
        for (int i = 0; i < n; i++) {
    
    
            list.add(new HashSet<>());
        }

        int row = roads.length;
        int col = 2;
        for (int i = 0; i < row; i++) {
    
    
            list.get(roads[i][0]).add(roads[i][1]);
            list.get(roads[i][1]).add(roads[i][0]);
        }

        int ans = 0;
        for (int i = 0; i < n; i++) {
    
    
            for (int j = 0; j < n; j++) {
    
    
                if (i != j) {
    
    
                    int diff = list.get(i).contains(j) ? 1 : 0;
                    int pre = list.get(i).size() + list.get(j).size() - diff;
                    ans = Math.max(ans,pre);
                }
            }
        }
        
        return ans;
    }
}

写在最后

  1. 最近的题目就是一些暴力,太忙了实在是,需要再加强数据结构和一些常规算法的课程;我欣赏某大佬的一句话,虽然这类竞赛没有太多实际意义,但这是一种思维体操,用以保持思维的敏捷性以及思考的积极性。

猜你喜欢

转载自blog.csdn.net/qq_36828395/article/details/109108582