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;
    }
}
相关推荐
Dream it possible!2 分钟前
LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等)
算法·leetcode·面试·动态规划
DevOpenClub22 分钟前
职教高考控制线 API:招生类别枚举、筛选与空分数含义
java·数据库·高考
心抵鹊27 分钟前
算法之双指针系列(一)
算法·leetcode
十二35 分钟前
【洛谷题解】P1083 [NOIP 2012 提高组] 借教室(二分答案 + 差分)
数据结构·c++·算法·蓝桥杯
露天赏雪1 小时前
第3篇:Sentinel熔断降级实战:大模型接口抖动时的服务兜底方案
java·开发语言·人工智能·spring boot·spring·servlet·sentinel
小此方2 小时前
[算法实战论:动态规划]回文串问题的dp解法,回文串问题的母题,以及以此为基础的派生题
算法·动态规划
天天被压力2 小时前
【A股分钟级高频数据完全手册 #06】北交所分钟级数据接口:京市股票Pro版最新分时
java·人工智能·python
天天被压力2 小时前
【A股分钟级高频数据完全手册 #05】指数历史分钟数据接口:Pro版沪深指数分时回放
java·人工智能·python
captain3762 小时前
▲统一功能——DispatcherServlet源码分析
java·spring·java-ee·log4j·maven
金銀銅鐵2 小时前
JDK 21 中 List.of 的实现细节:从 List12 到 ListN
java·后端·ai编程