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;
    }
}
相关推荐
ShineWinsu6 小时前
对于Linux:TCPsocket编程基础的解析
linux·网络协议·tcp/ip·面试·笔试·进程·远程指令
Jasmine_llq6 小时前
《P17010 [GESP202606 五级] 排排坐》
算法·贪心算法·数学化简求和式·排序sort 反向迭代器降序·线性遍历累加计算总权重和
va学弟6 小时前
LeetCode 热题 100 题解(1):哈希
python·算法·leetcode·哈希算法
言乐66 小时前
Python实现基本搜索引擎
java·linux·开发语言·python·搜索引擎
萧瑟余晖6 小时前
JDK 15 新特性详解
java
程序员老陆6 小时前
使用Qt+大华设备SDK预览大华摄像机视频
qt·算法·音视频·视频监控
L-影6 小时前
springboot启动流程
java·spring boot·spring
罗超驿6 小时前
9.优先级队列与堆:从底层原理到实战应用的完整指南
数据结构·算法
ch.ju7 小时前
Java Programming Chapter 4——lambda expression
java·开发语言