当前位置: 首页 > news >正文

LeetCode1170题解:预处理+二分查找

LeetCode第1170题[比较字符串最小字母出现频次]

典型的先预处理,再二分统计

题目本质:

对于每个queries[i],计算:有多少个word 满足f(queries[i]) < f(word)

也就是:先求出查询串的f再去words里数有多少个f(word)比它大

优化思路

因为我们要反复问:

有多少个f(word)严格大于某个值

这很适合:先把所有f(word)算出来排序,对每个queryf用二分查找

怎么找第一个 > x 的位置---这就是标准二分模板

也可以理解成找:第一个>= x+1的位置

import java.util.Arrays; class Solution { public int[] numSmallerByFrequency(String[] queries, String[] words) { int n = words.length; int[] w = new int[n]; // 先算所有 words 的 f 值 for (int i = 0; i < n; i++) { w[i] = f(words[i]); } // 排序,方便二分 Arrays.sort(w); int[] ans = new int[queries.length]; for (int i = 0; i < queries.length; i++) { int x = f(queries[i]); // 找第一个 > x 的位置 int idx = upperBound(w, x); ans[i] = n - idx; } return ans; } // 计算 f(s) private int f(String s) { char minChar = 'z'; int count = 0; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c < minChar) { minChar = c; count = 1; } else if (c == minChar) { count++; } } return count; } // 返回第一个 > target 的位置 private int upperBound(int[] nums, int target) { int l = 0, r = nums.length; while (l < r) { int mid = l + (r - l) / 2; if (nums[mid] <= target) { l = mid + 1; } else { r = mid; } } return l; } }
http://www.jsqmd.com/news/535418/

相关文章:

  • Airbnb算法面试高频题90天从入门到精通备战指南
  • DeepSeek-R1-Distill-Qwen-1.5B环境配置:vllm服务启动参数详解
  • 永磁同步电机,基于扩展卡尔曼滤波算法无传感器仿真模型,s函数编写算法,基于matlab/ si...
  • 安全使用 MurmurHash3 构建高吞吐去重系统
  • C#日志库三选一:Serilog、Log4net、NLog实战对比(附性能测试数据)
  • SEO_长期稳定的SEO优化应该怎么做
  • 五金行业进销存选型指南:5款主流软件横向对比,帮你避开选型坑
  • 终极KiCAD ESP8266模块库:一站式PCB设计解决方案
  • 毕设程序java中小学食品配送质量管理及溯源系统 基于Java的校园食材供应链安全监管与追溯平台 SpringBoot框架下的学校食堂原料流通质量追踪与管理系统
  • 5分钟搞定!用PaddleX训练图片分类器的保姆级教程(附常见报错解决)
  • 超越本地ollama:探索快马平台内AI模型如何成为你的智能编程助手
  • Akagi智能麻将助手:从零开始掌握AI辅助决策的完整指南
  • 颠覆式显卡性能调优工具:NVIDIA Profile Inspector革新性使用指南
  • Phi-4-Reasoning-Vision多场景:科研文献插图理解+实验数据交叉验证应用
  • 别再傻傻用iframe了!在Vue3项目中优雅集成Drawio编辑器(附完整通信示例)
  • 论文投稿后必做的几件事:如何跟踪SCI/EI检索状态及分区变化(含常见问题解答)
  • AI 辅助开发实战:从零构建高可用毕设校园二手交易平台
  • 银河麒麟V10飞腾架构下JDK与Nacos的国产化部署实战
  • 5个核心步骤:用开源工具G-Helper解决华硕笔记本性能优化难题
  • 化工ETF之后,投什么好?农业ETF159825值得关注布局
  • 终极解决方案:一键部署专属AI工具导航站的Tap4 AI Web UI完整指南
  • ThingsIoT Arduino客户端库:嵌入式设备云接入实战指南
  • ADaFuSE Adaptive Diffusion-generated Image and Text Fusion for Interactive Text-to-Image Retrieval
  • 告别繁琐账务,TaxHacker 帮你轻松管理财务![特殊字符]
  • Telnet另类用法:5分钟写个自动化端口检测脚本(支持批量测试)
  • EasyExcel导出日期变#####?3分钟搞定列宽自适应问题(附@ColumnWidth注解详解)
  • 游戏物理引擎实战:用牛顿欧拉方程模拟刚体旋转(Unity3D案例)
  • STM32F103ZET6通过IIC驱动VL53L0X实现多模式激光测距
  • 客户背调步骤:避开3个坑,5分钟完成全维度排查
  • AI角色一键生成工具正在改写3D创作流程:V2Fun.art+香蕉2,更丝滑的创作体验