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;
    }
}
相关推荐
小羊没烦恼!5 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
一隅论数智5 天前
给AI一张“业务概念地图“:本体如何从哲学走向企业智能
大数据·人工智能·经验分享·笔记·学习·学习方法·政务
倒头就睡的小比特5 天前
算法竞赛C++常用的STL
c++·算法
俊昭喜喜里5 天前
java中的继承和多态的区别
java
小羊没烦恼!5 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕5 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码5 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖5 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时5 天前
01-06-A-JVM排查实战详解
java·jvm
晨米酱5 天前
AGENTS.md:Agent 的上下文策略层
面试·架构·agent