首页 > 其他分享 >2022-8-25 剑指offer-字典树-每日一题-二分/排序

2022-8-25 剑指offer-字典树-每日一题-二分/排序

时间:2022-08-25 14:16:17浏览次数:84  
标签:25 arr String offer int abs 2022 new 词根

剑指 Offer II 063. 替换单词

难度中等

在英语中,有一个叫做 词根(root) 的概念,它可以跟着其他一些词组成另一个较长的单词——我们称这个词为 继承词(successor)。例如,词根an,跟随着单词 other(其他),可以形成新的单词 another(另一个)。

现在,给定一个由许多词根组成的词典和一个句子,需要将句子中的所有继承词词根替换掉。如果继承词有许多可以形成它的词根,则用最短的词根替换它。

需要输出替换之后的句子。

 1 class Solution {
 2     public String replaceWords(List<String> dictionary, String sentence) {
 3         Set<String> prefix=new HashSet<>();
 4         for (String s:dictionary){
 5             prefix.add(s);
 6         }  
 7         String[] arr=sentence.split(" ");
 8         StringBuilder sb=new StringBuilder();
 9         for (int i=0;i<arr.length;i++){
10             boolean f=false;
11             for (int j=0;j<arr[i].length();j++){
12                 if (prefix.contains(arr[i].substring(0,j+1))){
13                     sb.append(arr[i].substring(0,j+1));
14                     f=true;
15                     break;
16                 }
17             }
18             if (!f) sb.append(arr[i]);
19             if (i!=arr.length-1) sb.append(" ");
20         }
21         return sb.toString();
22     }
23 }

思路:字典树也可以。前缀特殊标记方便判断是否有前缀。

658. 找到 K 个最接近的元素

难度中等

给定一个 排序好 的数组 arr ,两个整数 k 和 x ,从数组中找到最靠近 x(两数之差最小)的 k 个数。返回的结果必须要是按升序排好的。

整数 a 比整数 b 更接近 x 需要满足:

  • |a - x| < |b - x| 或者
  • |a - x| == |b - x| 且 a < b
 1 class Solution {
 2     public List<Integer> findClosestElements(int[] arr, int k, int x) {
 3         PriorityQueue<Integer> q=new PriorityQueue<>(
 4             (a,b)->{
 5                 if (Math.abs(a-x)==Math.abs(b-x)){
 6                     return a-b;
 7                 }else{
 8                     return Math.abs(a-x)-Math.abs(b-x);
 9                 }
10             }
11         );
12         for (int num:arr){
13             q.offer(num);
14         }
15         int[] nums=new int[k];
16         for (int i=0;i<k;i++){
17             nums[i]=q.poll();
18         }
19         Arrays.sort(nums);
20         List<Integer> list=new ArrayList<>();
21         for (int y:nums) list.add(y);
22         return list;
23     }
24 }

思路:可以array直接排序,或者二分查找。

 

标签:25,arr,String,offer,int,abs,2022,new,词根
From: https://www.cnblogs.com/benbicao/p/16624101.html

相关文章

  • 如何在FirPE中运行AutoHotkey脚本和Maye-Lite-2022年8月25日
     如何在FirPE中运行AutoHotkey脚本和Maye-Lite-2022年8月25日      说明:由于“AutoHotkey中文社区”网站的写文章网页没有实时自动保存当前编辑内容的功能......
  • 202208 网课实录
    前言文化课选手来学文化课了!不知道为啥,上了一半改成了网课,只留下新高一的军训。由于是网课,形式算是特殊的,有记录的必要。之后寒暑假据说有概率继续网课。用的课后网(无......
  • 2022 居家办公高性价比的电动升降桌选购指南 All In One
    2022居家办公高性价比的电动升降桌选购指南AllInOne2022居家办公如何挑选和购买一款高性价比的电动升降桌AllInOneElectricStandingDesk/电动站立式办公桌......
  • 疑问2022-8-25
    //预处理查询示例funcprepareQueryDemo(){ sqlStr:="selectid,name,agefromuserwhereid>?" stmt,err:=db.Prepare(sqlStr) iferr!=nil{ fmt.Pr......
  • Vectorworks 2022(首选3D建筑设计软件)
    Vectorworks2022是一款建筑设计软件,Vectorworks软件使得在概念设计阶段就很容易量化和分析信息,因此您可以做出明智的决定。运行“假设如何”场景和自动化进度表、计算成本......
  • 2022年8月份压测的一些想法
    停车压测:    查询类压测注意事项:       1.例如车牌查询,1000用户并发压测京AA20524,那么服务器的内存变化不大。如果压测的车牌不同每个不一样,那才会......
  • 2022牛客暑假第五场加塞
    M-MaimaiDX2077_"蔚来杯"2022牛客暑期多校训练营(加赛)(nowcoder.com)阅读理解和膜你题。doublepts[5][5]={ {1,1,0.8,0.5,0}, {2,2,1.6,1.0,0}, {3,3,2.4,1.5,0},......
  • 2022-08-24 第五组 赖哲栋 学习笔记
    JavaScriptJavaScript脚本语言,解释型,主要用来给HTML网页增加动态功能通常的js是运行在浏览器环境下的JS的两种模型DOM:文档对象模型documentBOM:浏览器对象模型wind......
  • 【2022知乎爬虫】我用Python爬虫爬了2300多条知乎评论!
    您好,我是@马哥python说,一枚10年程序猿。一、爬取目标前些天我分享过一篇微博的爬虫:https://www.cnblogs.com/mashukui/p/16414027.html但是知乎平台和微博平台的不同......
  • 暑假学习三 8.25 继续配置环境
    1.初始化,只能一次,只在第一台机器初始化即可 hdfsnamenode-format需要注意在之前确认没错的情况下执行成功后又以下提示: 2.Hadoop集群的启停止命令shell脚......