news 2026/5/15 0:51:45

D.二分查找-进阶——1170. 比较字符串最小字母出现频次

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
D.二分查找-进阶——1170. 比较字符串最小字母出现频次

题目链接:1170. 比较字符串最小字母出现频次(中等)

算法原理:

解法:二分查找-求最右端点

6ms击败44.49%

时间复杂度O(Nlogn)

问题转化:将次数都抽取出来,那么就是说从words的次数数组中找到比queries[i]的次数大的次数的个数

问题转化后跟下面这题基本一模一样👇

D.二分查找-基础——744. 寻找比目标字母大的最小字母

大家如果还是看不懂的话就看下面的笔记吧,从怎么想到的->如何推导的->如何理解,全能解决👇

Java代码:

class Solution { public int[] numSmallerByFrequency(String[] queries, String[] words) { //问题转化:将次数都抽取出来,那么就是说从words的次数数组中找到比queries[i]的次数大的次数的个数 int n=queries.length,m=words.length; int[] nums1=new int[n]; int[] nums2=new int[m]; for(int i=0;i<n;i++) nums1[i]=f(queries[i]); for(int i=0;i<m;i++) nums2[i]=f(words[i]); Arrays.sort(nums2); int[] ret=new int[n]; for(int i=0;i<n;i++){ //设定目标值t int t=nums1[i]; //找最右端点 int left=0,right=m-1; while(left<right){ int mid=left+(right-left+1)/2; if(nums2[mid]>t) right=mid-1; else left=mid; } ret[i]=nums2[left]>t?m:(left+1<m?m-(left+1):0); } return ret; } //计算每个字符串的字数 private int f(String s){ //只有小写字母,可用数组代替哈希表 int[] hash=new int[26]; //记录出现的最小的字母的索引 int min=26; for(char c:s.toCharArray()){ int index=c-'a'; hash[index]++; min=index<min?index:min; } return hash[min]; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/13 14:42:00

Python多线程实战:12306抢票系统的并发处理优化

一、引言&#xff1a;为什么12306抢票需要多线程&#xff1f; 在12306抢票系统中&#xff0c;并发处理是提升抢票成功率的关键因素之一。抢票过程涉及多个耗时操作&#xff1a; CDN筛选&#xff1a;需要测试大量CDN节点的响应速度用户状态检查&#xff1a;需要定期验证登录状态…

作者头像 李华
网站建设 2026/5/9 14:24:03

23、结合 XLink、XPath 和 XPointer 访问子资源

结合 XLink、XPath 和 XPointer 访问子资源 在实际的数据访问中,我们常常需要获取文档的部分信息而非整个文档。结合 XLink、XML 路径语言(XPath)和 XML 指针语言(XPointer)可以提供这样一种访问文档特定部分的机制。 1. 结合 XLink、XPath 和 XPointer 访问子资源 之前…

作者头像 李华
网站建设 2026/5/14 12:25:31

27、XML数据绑定与记录集导航全解析

XML数据绑定与记录集导航全解析 1. 数据来源与记录集构建 整个数据源包含在 <inventory> 元素中,其中有两个记录,每个记录由 <catalog> 元素定义。每个记录包含六个字段: <name> 、 <cost> 、 <clarity> 、 <carat> 、 …

作者头像 李华
网站建设 2026/5/14 1:42:48

OpenBoardView终极指南:如何免费查看和分析.brd电路板文件

OpenBoardView终极指南&#xff1a;如何免费查看和分析.brd电路板文件 【免费下载链接】OpenBoardView View .brd files 项目地址: https://gitcode.com/gh_mirrors/op/OpenBoardView 在电子设计和硬件维修领域&#xff0c;.brd电路板文件的查看与分析是工程师日常工作中…

作者头像 李华
网站建设 2026/5/9 22:06:07

38、探索CDF技术:从基础到实践

探索CDF技术:从基础到实践 1. CDF简介 CDF(Channel Definition Format)是一种XML技术,它允许网站发布者向其终端用户订阅者定期或规律地提供信息,这些信息通常是更新的内容,甚至包括软件更新。网站发布者创建CDF文档来处理、组合或浓缩他们的信息,然后根据请求或按规律…

作者头像 李华
网站建设 2026/5/12 20:29:50

ContextMenuManager:Windows右键菜单终极清理优化指南

ContextMenuManager&#xff1a;Windows右键菜单终极清理优化指南 【免费下载链接】ContextMenuManager &#x1f5b1;️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 还在为Windows右键菜单里塞满各种软件选项而烦…

作者头像 李华