力扣面试题 17.11. 单词距离(双指针)

Problem: 面试题 17.11. 单词距离

文章目录

  • 题目描述
  • 思路
  • 复杂度
  • Code

题目描述

在这里插入图片描述

思路

Problem力扣面试题 16.06. 最小差

该题目只需预先做一些处理,即可以转换为上述题目:

1.预处理操作:定义两个数组w1ps,w2ps用于记录在words数组中两个单词word1与word2每次出现的位置;
2.双指针操作:用两个指针p1,p2分别指向两个数组的开头,同时用一个变量minRet记录两个单词之间的距离;若p1指向的数大于p2指向的数(若当前两个单词距离小于minRet则更新minRet)则p2++;反知p1++(若当前两个单词距离小于minRet则更新minRet)

复杂度

时间复杂度:

O ( n ) O(n) O(n);其中 n n n为数组words的大小

空间复杂度:

O ( n ) O(n) O(n)

Code

class Solution {
public:/*** Two pointer* @param words Given array * @param word1 Given word1* @param word2 Given word2* @return int*/int findClosest(vector<string> &words, string word1, string word2) {vector<int> w1ps;vector<int> w2ps;for (int i = 0; i < words.size(); ++i) {string word = words[i];if (word == word1) {w1ps.push_back(i);} else if (word == word2) {w2ps.push_back(i);}}int p1 = 0;int p2 = 0;int minRet = INT32_MAX;while (p1 < w1ps.size() && p2 < w2ps.size()) {int pos1 = w1ps[p1];int pos2 = w2ps[p2];if (pos1 > pos2) {if (minRet > pos1 - pos2) {minRet = pos1 - pos2;}p2++;} else {if (minRet > pos2 - pos1) {minRet = pos2 - pos1;}p1++;}}return minRet;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/448027.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谷粒商城【成神路】-【4】——分类维护

目录 1.删除功能的实现 2.新增功能的实现 3.修改功能的实现 4.拖拽功能 1.删除功能的实现 1.1逻辑删除 逻辑删除&#xff1a;不删除数据库中真实的数据&#xff0c;用指定字段&#xff0c;显示的表示是否删除 1.在application.yml中加入配置 mybatis-plus:global-config:…

备战蓝桥杯---数据结构与STL应用(进阶4)

今天主要围绕并查集的一些今典题目展开&#xff1a; 在这里&#xff0c;我们把逻辑真的组合&#xff0c;用并查集即可。一开始&#xff0c;我觉得把a,b,c等价&#xff0c;把第一个赋a,接下来推即可&#xff0c;但这样在判断矛盾时还需要选择合适的点find&#xff0c;于是我们把…

构建LLM辅助生物威胁制造预警系统 人类越发展获取的超能力越大,破坏力越大,威胁越大。我们需要什么样的预警系统?既克服威胁又具有超能力 安全基础

https://openai.com/research/building-an-early-warning-system-for-llm-aided-biological-threat-creation 人类越发展获取的超能力越大&#xff0c;破坏力就越大&#xff0c;威胁越大。 人工智能就是为了赋予人人都能有超能力&#xff0c;而一旦被恶意或无意使用又威胁到人…

C/C++ (stdio.h)标准库详解

cstdio,在C语言中称为stdio.h。该库使用所谓的流与物理设备&#xff08;如键盘、打印机、终端&#xff09;或系统支持的任何其他类型的文件一起操作。 在本文将会通过介绍函数参数&#xff0c;举出实际的简单例子来帮助大家快速上手使用函数。 目录 一、流 二、库函数 1、F…

jenkins 下载插件sentry-cli失败 证书过期

现状 npm set ENTRYCLI_CDNURLhttps://cdn.npm.taobao.org/dist/sentry-cli npm set sentrycli_cdnurlhttps://cdn.npm.taobao.org/dist/sentry-cli 原因是npm原域名停止解析&#xff0c;在访问上面sentry-cli的cdn资源的时候 证书过期无法下载。 解决&#xff1a; 替换证书过期…

二、基本数值类型、数组和类型转换

文章目录 基本数值类型、数组和类型转换1.1 整数类型1.2 浮点数类型1.3 布尔类型1.4 字符类型1.5 数组类型1.5.1 一维数组1.5.2 多维数组 1.6 数据类型的转换1.6.1 自动类型转换1.6.2 强制类型转换 基本数值类型、数组和类型转换 本文为书籍《Java编程的逻辑》1和《剑指Java&a…

Linux进程信号处理:深入理解与应用(1)

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;its 6pm but I miss u already.—bbbluelee 0:01━━━━━━️&#x1f49f;──────── 3:18 &#x1f504; ◀️…

江科大stm32学习笔记10——对射式红外传感器

一、接线 上电之后可以看到对射式红外传感器亮两个灯&#xff0c;如果此时用挡光片挡住两个黑色方块中间的部分&#xff0c;则只亮一个灯。 二、代码 将4-1的工程文件夹复制粘贴一份&#xff0c;重命名为“5-1 对射式红外传感器计次”&#xff0c;打开keil&#xff0c;右键添…

【FPGA Verilog】各种加法器Verilog

1bit半加器adder设计实例 module adder(cout,sum,a,b); output cout; output sum; input a,b; wire cout,sum; assign {cout,sum}ab; endmodule 解释说明 &#xff08;1&#xff09;assign {cout,sum}ab 是连续性赋值 对于线网wire进行赋值&#xff0c;必须以assign或者dea…

银行数据仓库体系实践(16)--数据应用之财务分析

总账系统 在所有公司中&#xff0c;财务分析的基础都是核算&#xff0c;那在银行的系统体系中&#xff0c;核算功能在业务发生时由业务系统如核心、贷款、理财中实现登记&#xff0c;各业务系统会在每天切日后统计当天各机构的核算科目的发生额与余额&#xff0c;并统一送到总账…

day35 柠檬水找零 根据身高重建队列 用最少数量的箭引爆气球

题目1&#xff1a;860 柠檬水找零 题目链接&#xff1a;860 柠檬水找零 题意 一杯柠檬水5美元&#xff0c;每位顾客只买一杯柠檬水&#xff0c;支付5美玉&#xff0c;10美元&#xff0c;20美元&#xff0c;必须正确找零 开始时并没有零钱 若可以正确找零&#xff0c;则返回…

【教程】苹果上架常见要求的有哪些?

引言 苹果上架要求是苹果公司对于提交应用程序到苹果商店上架的要求和规定。这些要求主要是为了保证用户体验、应用程序的质量和安全性。开发者在准备提交应用程序之前&#xff0c;务必了解并遵守苹果上架要求&#xff0c;以确保应用程序能够通过苹果公司的审核。 1. 合法合规…