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;
    }
}
相关推荐
怕浪猫11 小时前
第 1 章 FDE的崛起
面试
裕晟资质规划13 小时前
武器装备科研生产单位保密资质申请方法论:条件模型与流程拆解
人工智能·算法
EXI-小洲13 小时前
Java 操作 Word:字符串替换、图片插入、动态生成表格与API接口下载
java·开发语言·spring boot·word
2601_9619017014 小时前
SpringBoot使用Nacos进行application.yml配置管理
java·spring boot·spring
en.en..14 小时前
C语言 标准输入 / 输出缓冲区
算法
何以解忧,唯有..15 小时前
LangChain 工具调用(Tool Calling)实战指南
java·前端·langchain
QQ_216962909615 小时前
【源码编号:project79475】SpringBoot校内二手交易平台:商品发布、分类检索、留言交流、订单管理全流程实战
java·spring boot·后端
吃好睡好便好16 小时前
查找函数的使用
学习·算法·matlab·生活·查找函数
学习星球16 小时前
单调栈——从“找下一个更大的“到柱状图中的最大矩形
数据库·c++·算法·leetcode·xcode
前端 贾公子16 小时前
第09章:上下文与记忆 (2)
java·服务器·前端