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

稀疏数组搜索

题目链接

稀疏数组搜索

题目描述

注意点

  • 字符串数组中散布着一些空字符串
  • words的长度在[1, 1000000]之间
  • 字符串数组是排好序的
  • 数组中的字符串不重复

解答思路

  • 因为数组中的字符串是排好序的,所以首先想到的是二分查找,先将数组中长度与s相同的字符串统计出来,然后二分比较字符串word与s(如果word小于s则向右二分,如果word大于s则向左二分)

代码

class Solution {public int findString(String[] words, String s) {List<Integer> list = new ArrayList<>();for (int i = 0; i < words.length; i++) {if (words[i].length() == s.length()) {list.add(i);}}int left = 0;int right = list.size() - 1;while (left <= right) {int mid = left + ((right - left) >> 1);int idx = list.get(mid);int res = words[idx].compareTo(s);if (res == 0) {return idx;}if (res < 0) {left = mid + 1;} else {right = mid - 1;}}return -1;}
}

关键点

  • 二分查找的思想
http://www.lryc.cn/news/391384.html

相关文章:

  • 存储器类型介绍
  • 论文学习笔记1:Federated Graph Neural Networks: Overview, Techniques, and Challenges
  • [数据集][目标检测]轮椅检测数据集VOC+YOLO格式13826张1类别
  • 视频剪辑音乐自动卡点Pr插件 BeatEdit v2.2 免费下载
  • 【INTEL(ALTERA)】为什么Nios® II构建流程报告无法在 Windows WSL 上确定程序大小?
  • 2024年第十四届APMCM亚太地区大学生数学建模竞赛
  • 删除账户相关信息
  • JavaSE (Java基础):面向对象(下)
  • Element中的日期时间选择器DateTimePicker和级联选择器Cascader
  • Construct公司 从 0 到 1 基于 Kitex+Istio 的微服务系统建设
  • day04-组织架构
  • Web3 开发者入门手册:技能、工具和职业前景
  • 元宇宙虚拟实景展馆树立客户对企业的信任和好感
  • 【C语言】宏定义在 a.c 中定义,如何在 b.c 中使用?
  • vue3 滚动条滑动到元素位置时,元素加载
  • [Linux] 相对路径(Relative Path)与绝对路径(Absolute Path)
  • [ESP32] I2S播放wav文件
  • YOLOv8
  • 协程调度模块
  • 2024 最新docker仓库镜像,6月,7月
  • 探索Vim的文本处理能力:精通查找与替换
  • 2024.7.4学习日报
  • 享元模式(Flyweight Pattern)
  • Oracle连接mysql
  • golang 垃圾回收
  • React 中如何使用 Monaco
  • 开源RAG个人知识库项目开发分析
  • 事务底层与高可用原理
  • 树状数组基础知识
  • 【3分钟准备前端面试】vue3