1614.括号的最大嵌套深度 & 89.格雷编码

130 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

题目

1614.括号的最大嵌套深度

题目大意

img

思路

要求就是考虑字符串中字符的最深的嵌套深度,实际上就是遇到一个'(',当前深度+1,遇到一个')' ,深度-1,而答案每次需要根据当前深度进行更新,取最大的深度。

代码

class Solution {
public:
    int maxDepth(string s) {
        int len=s.length(),now=0,ans=0;
        for(int i=0;i<len;i++){
            if(s[i]=='(')now++;
            else if(s[i]==')')now--;
            ans=max(ans,now);
        }
        return ans;
    }
};

题目

89.格雷编码

题目大意

请添加图片描述

样例

请添加图片描述

数据规模

请添加图片描述

思路

通过题意可以知道格雷码的定义,而通过资料可以想到最简单的构造方法:

请添加图片描述

那么一开始就先存储(0,1)(这是n=1的情况),接下来每次将之前的所有格雷码倒序加到数组末尾并且叠加上2k1(k表示当前第几位)2^{k-1}(k表示当前第几位) ,这样做n-1轮就是最终要的格雷码。

代码

class Solution {
public:
    vector<int> grayCode(int n) {
        vector<int>ans;
        ans.push_back(0);
        ans.push_back(1);
        int t=1;
        for(int i=2;i<=n;i++){
            int tot=ans.size();
            t*=2;
            for(int j=tot-1;j>=0;j--){
                ans.push_back(t+ans[j]);
            }
        }
        return ans;
    }
};