IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> Leetcode Weekly Contest 264(字符串、DFS) -> 正文阅读

[数据结构与算法]Leetcode Weekly Contest 264(字符串、DFS)

题目链接: Leetcode Weekly Contest 264

1、2047. Number of Valid Words in a Sentence

难度:Easy

代码:

class Solution {
    public int countValidWords(String sentence) {
        int j=0;
        while(j<sentence.length()&&sentence.charAt(j)==' '){
            j++;
        }
        sentence=sentence.substring(j);
        String[] str=sentence.split("\\s+");
        //System.out.println(str.length);
        int res=0;
        for(String s:str){
            //System.out.println(s);
            char[] a=s.toCharArray();
            boolean flag=true;
            int hyphen=0;
            for(int i=0;i<a.length;i++){
                if(hyphen>=2){
                    flag=false;
                    break;
                }
                if(a[i]>='0'&&a[i]<='9'){
                    flag=false;
                    break;
                }
                if(a[i]=='-'){
                    hyphen++;
                    if(i==0||i==a.length-1||a[i-1]>'z'||a[i-1]<'a'||a[i+1]>'z'||a[i+1]<'a'){
                        flag=false;
                        break;
                    }
                    
                }
                if((a[i]=='!'||a[i]=='.'||a[i]==',')&&(i!=a.length-1)){
                    flag=false;
                    break;
                }
            }
            if(flag){
                res++;
            }
        }
        return res;
    }
}

2、2048. Next Greater Numerically Balanced Number

难度:Medium

思路:

暴力把1e6内所有的平衡数求出来,比1e6大的最小平衡数是1224444。

代码:

class Solution {
    public int nextBeautifulNumber(int n) {
        int[] cnt=new int[10];
        int[] arr={1,22,122,212,221,333,1333,3133,3313,3331,4444,14444,22333,23233,23323,23332,32233,32323,32332,33223,33232,33322,41444,44144,44414,44441,55555,122333,123233,123323,123332,132233,132323,132332,133223,133232,133322,155555,212333,213233,213323,213332,221333,223133,223313,223331,224444,231233,231323,231332,232133,232313,232331,233123,233132,233213,233231,233312,233321,242444,244244,244424,244442,312233,312323,312332,313223,313232,313322,321233,321323,321332,322133,322313,322331,323123,323132,323213,323231,323312,323321,331223,331232,331322,332123,332132,332213,332231,332312,332321,333122,333212,333221,422444,424244,424424,424442,442244,442424,442442,444224,444242,444422,515555,551555,555155,555515,555551,666666};
        for(int num:arr){
            if(num>n){
                return num;
            }
        }
        return 1224444;
    }
}

3、2049. Count Nodes With the Highest Score

难度:Medium

思路:

参考高赞回答,用DFS求解。

代码

class Solution {
    public int countHighestScoreNodes(int[] parents) {
        int n=parents.length;
        List<List<Integer>> children=new ArrayList<>();
        for(int i=0;i<n;i++){
            children.add(new ArrayList<>());
        }
        for(int i=1;i<n;i++){
            children.get(parents[i]).add(i);
        }
        int[] numNodes=new int[n];//numNodes[i]表示以i为根节点的子树共有多少个节点
        dfs(0,children,numNodes);
        long maxScore=0L;
        long[] score=new long[n];//score[i]表示移除节点i的得分
        for(int i=0;i<n;i++){
            int remain=n-numNodes[i];//移除掉以i为根节点后还剩下的节点个数
            if(remain>0){
                score[i]=remain;
            }
            else{
                score[i]=1;
            }
            for(int child:children.get(i)){
                score[i]*=numNodes[child];
            }
            maxScore=Math.max(maxScore,score[i]);
        }
        int count=0;
        for(long s:score){
            if(s==maxScore){
                count++;
            }
        }
        return count;
    }
    public int dfs(int node,List<List<Integer>> children,int[] numNodes){
        int numChild=0;
        for(int child:children.get(node)){
            if(numNodes[child]>0){
                numChild+=numNodes[child];
            }
            else{
                numChild+=dfs(child,children,numNodes);
            }
        }
        numNodes[node]=numChild+1;//加上自己本身
        return numNodes[node];
    }
}

4、2050. Parallel Courses III

难度:Hard

思路

暂时不会。

代码

//
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-25 12:43:47  更:2021-10-25 12:44:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:39:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码