A.每日一题:1967题+1331题

1967题

题目链接:1967. 作为子字符串出现在单词中的字符串数目(简单)

算法原理:

解法:枚举

0ms击败100.00%

时间复杂度O(N)

思路很简单,直接看 word 中是否包含 patterns 中的字符串即可,包含就计数++

Java代码:

java 复制代码
class Solution {
    //1967. 作为子字符串出现在单词中的字符串数目
    public int numOfStrings(String[] patterns, String word) {
        int cnt=0;
        for(String s:patterns) if(word.contains(s)) cnt++;
        return cnt;
    }
}

1331题

题目链接:1331. 数组序号转换(简单)

算法原理:

解法一:二分查找

29ms击败57.17%

时间复杂度O(n logn)

拿示例一举例,将 arr = 20 , 20 , 10 , 30 复制一份,排序去重后得到 sorted = 10 , 20 , 30 ,在这个数组上分别二分查找 20,20,10,30 的下标+1 即为答案

解法二:哈希表

29ms击败57.17%

时间复杂度O(n logn)

拿示例一举例,将 arr = 20 , 20 , 10 , 30 复制一份,排序去重后得到 sorted = 10 , 20 , 30 ,然后创建一个哈希表,把 10,20,30 分别映射到1,2,3,最后,查询 20,20,10,30 在哈希表中对应的 value 即为答案

Java代码:

java 复制代码
class Solution {
    //1331. 数组序号转换
    //解法一:二分查找
    public int[] arrayRankTransform(int[] arr) {
        //排序
        int[] sorted=arr.clone();
        Arrays.sort(sorted);
        //去重
        int index=0;
        for(int x:sorted)
            //如果这个数是第一个或者与前一个不同,说明是一个新面孔
            if(index==0||x!=sorted[index-1])
                sorted[index++]=x;
        for(int i=0;i<arr.length;i++)
            arr[i]=Arrays.binarySearch(sorted,0,index,arr[i])+1;
        return arr;
    }
}
java 复制代码
class Solution {
    //1331. 数组序号转换
    //解法二:哈希表
    public int[] arrayRankTransform(int[] arr) {
        //排序
        int[] sorted=arr.clone();
        Arrays.sort(sorted);
        //去重的同时构建哈希表
        Map<Integer,Integer> rank=new HashMap<>();
        int index=0;
        for(int x:sorted){
            //如果这个数是第一个或者与前一个不同,说明是一个新面孔
            if(index==0||x!=sorted[index-1])
                rank.put(x,rank.size()+1);
            index++;
        }
        for(int i=0;i<arr.length;i++)
            arr[i]=rank.get(arr[i]);
        return arr;
    }
}
相关推荐
聚美智数2 小时前
智能结构化识别-图片结构解析-图像结构化解析-照片结构化解析
android·java·数据库
十年Java程序媛2 小时前
Java枚举Enum完整教程|替代静态常量,开发与面试要点
java·开发语言·spring boot·后端·面试
我是人✓2 小时前
SpringBoot静态资源映射揭秘
java·spring boot·后端
土豆.exe3 小时前
nf_tables 的 verdict 被读了两次:一个十年未闭合的位域错配
java·数据库·网络安全·缓存
生态学者3 小时前
Global Change Biology | 森林越“步调一致”,反而越怕干旱?树木生长与叶片活动的同步之谜
大数据·人工智能·算法·r语言·微信公众平台
lsswear3 小时前
Agent 框架新手入门与实战部署指南
大数据·人工智能·算法
考研保研资料分享3 小时前
2022年马理论保研复盘:南师大原著题、首师大追问与上财选择
面试
小坏讲微服务4 小时前
刚发布一个月的JDK 27,为什么我建议你立刻升级?
java·开发语言·spring boot·spring·架构·求职招聘·springboot4
kunicoding4 小时前
多线程编程核心概念详解:从线程基础到并发安全
java·jvm·安全
可爱系程序猿4 小时前
模型推理任务弹出找不到 cublas64_12.dll,CUDA 12 矩阵计算库按安装包核对
程序人生·线性代数·矩阵·电脑