3115.力扣每日一题7/2 Java

  • 博客主页:音符犹如代码
  • 系列专栏:算法练习
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

目录

思路

解题方法

时间复杂度

空间复杂度

Code

总结


思路

这道题的解题思路是首先理解题目要求:在给定的整数数组中找到任意两个质数之间的最大距离。为了找到这个最大距离,我们需要遍历数组,同时跟踪遇到的最小质数和最大质数的位置(即下标)。当我们遍历数组时,对于每个元素,我们使用一个辅助函数来判断它是否是质数。如果是质数,我们就更新最小质数和最大质数的位置(如果还没有找到最小质数,就将其设置为当前质数的位置;对于最大质数的位置,我们总是更新为当前质数的位置,因为我们想要找到的是任意两个质数之间的最大距离)。最后,我们返回最大质数和最小质数位置之间的差值作为结果。

方法

  1. 初始化:设置两个变量minPrimeIndexmaxPrimeIndex为-1,用于跟踪最小质数和最大质数的位置。

  2. 遍历数组:使用循环遍历给定的整数数组。

  3. 质数判断:对于数组中的每个元素,使用辅助函数isPrime来判断它是否是质数。

  4. 更新位置

    • 如果当前元素是质数,并且还没有找到最小质数(即minPrimeIndex为-1),则更新minPrimeIndex为当前元素的位置。
    • 无论是否已经找到最小质数,都更新maxPrimeIndex为当前质数的位置,因为我们想要跟踪遇到过的最大质数的位置。
  5. 返回结果:遍历完数组后,检查minPrimeIndexmaxPrimeIndex的值。如果它们相等(即没有找到质数),则返回0;否则,返回maxPrimeIndex - minPrimeIndex作为结果。

时间复杂度

时间复杂度主要取决于两个因素:遍历数组和质数判断。

  • 遍历数组是线性的,即O(n),其中n是数组的长度。
  • 质数判断的时间复杂度在最坏情况下是O(sqrt(m)),其中m是当前要判断的数。但是,由于我们只对数组中的每个元素进行一次质数判断,并且数组的长度是有限的,因此我们可以将质数判断的总体时间复杂度视为与数组长度n成线性关系(尽管实际上是一个更复杂的函数,但在这里我们可以将其简化为与n相关的函数)。

空间复杂度

空间复杂度是O(1),因为我们只使用了几个变量(minPrimeIndexmaxPrimeIndex以及isPrime函数中的几个循环变量)来存储状态,这些变量的数量不随输入数组的大小而变化。我们没有使用任何与输入数组大小成正比的额外空间来存储数据。

Code

class Solution {  public int maximumPrimeDifference(int[] nums) {  int minPrimeIndex = -1; // 记录最小质数的下标  int maxPrimeIndex = -1; // 记录最大质数的下标  for (int i = 0; i < nums.length; i++) {  if (isPrime(nums[i])) {  if (minPrimeIndex == -1) {  minPrimeIndex = i; // 更新最小质数的下标  }  maxPrimeIndex = i; // 更新最大质数的下标(每遇到一个质数就更新)  }  }  // 如果数组中只有一个质数,则最大距离为0  if (minPrimeIndex == maxPrimeIndex) {  return 0;  }  // 返回最大质数和最小质数之间的下标差  return maxPrimeIndex - minPrimeIndex;  }  private boolean isPrime(int n) {  if (n <= 1) {  return false;  }  for (int i = 2; i * i <= n; i++) {  if (n % i == 0) {  return false;  }  }  return true;  }  
}

总结

对于在给定整数数组中找到任意两个质数之间最大距离的问题,上述的直接遍历加状态跟踪的解法通常是最简单且直接的方法。虽然可以探索其他解法或优化思路,但在实际应用中,这些方法的效率和可行性可能因问题的具体条件而异。在没有特定要求或限制的情况下,推荐使用直接且有效的方法来解决问题。

Blessed is he whose fame does not outshine his truth. 有福之人,是因为他的真实比他的名誉更耀眼。——泰戈尔

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

PDM系统中物料分类与编码规则生成方案

在企业管理软件中&#xff0c;PDM系统是企业管理的前端软件&#xff0c;用于管理研发图纸、BOM等数据&#xff0c;然后生成相关物料表或BOM&#xff0c;递交给后端ERP系统进行生产管理。在PDM系统中&#xff0c;有两种方式可以生成物料编码。 1第一种是用户可以通过软件接口将…

浅谈MyBatis的工作原理以及核心流程

引言 在行内日常开发工作中&#xff0c;基于Java的研发项目会大量的与数据库做交互访问。传统方式是通过JDBC访问数据库&#xff0c;不仅需要繁琐的手工编写很多代码&#xff0c;增加了工程项目的复杂度&#xff0c;而且存在难以维护&#xff0c;配置不够灵活等特点。为解决传…

架构师学习理解和总结

1.架构设计理念 2.架构方法论 2.1需求分析 2.1.1常见需求层次 2.1.2 常见需求结果 2.1.3 需求与架构关系 2.2 领域分析 2.3 关键需求 2.4 概念架构设计 2.5 细化架构设计 2.6 架构设计验证 3.架构设计工具 3.1 DDD领域建模 3.2 41视图分析法 3.3 UML设计工具 4.架构师知…

EDI安全:如何在2024年保护您的数据免受安全和隐私威胁

电子数据交换&#xff08;EDI&#xff09;支持使用标准化格式在组织之间自动交换业务文档。这种数字化转型彻底改变了业务通信&#xff0c;消除了对纸质交易的需求并加速了交易。然而&#xff0c;随着越来越依赖 EDI 来传输发票、采购订单和发货通知等敏感数据&#xff0c;EDI …

利用canvas压缩图片

前情提要 页面打印导出pdf文件的时候&#xff0c;图片大小会影响pdf文件大小。 为了减小pdf文件大小&#xff0c;需要将图片压缩一下。在只有图片地址的情况下&#xff0c;将图片压缩后显示&#xff0c;一开始用的browser-image-compression插件&#xff0c;这是js压缩&#x…

Elasticsearch:Node.js ECS 日志记录 - Winston

这是继上一篇文章 “Elasticsearch&#xff1a;Node.js ECS 日志记录 - Pino” 的续篇。我们继续上一篇文章来讲述使用 Winston 包来针对 Node.js 应用生成 ECS 向匹配的日子。此 Node.js 软件包为 winston 记录器提供了格式化程序&#xff0c;与 Elastic Common Schema (ECS) …

迈巴赫S480升级头等舱行政独立四座马鞍小桌板追求极致舒适

迈巴赫 S480 一直以来都代表着尊贵与奢华的巅峰。然而&#xff0c;对于追求极致舒适与专属体验的车主而言&#xff0c;常规配置或许仍不足以满足其苛刻的需求。正因如此&#xff0c;迈巴赫 S480 的头等舱行政独立 4 座改装应运而生&#xff0c;为这款豪华座驾注入了全新的灵魂。…

惟客数据Q2荣誉成绩单新鲜出炉

作为众多头部企业客户的数字化经营合作伙伴 WakeData惟客数据一直坚持以客户为中心&#xff0c;以数据驱动 致力于让数据智能商业落地更敏捷 凭借值得信赖的客户经营数字化和资源管理数字化实力 惟客数据在2024年第二季度斩获多项荣誉 1、 第一新声《2023年度中国高科技高…

【鸿蒙学习笔记】MVVM模式

官方文档&#xff1a;MVVM模式 [Q&A] 什么是MVVM ArkUI采取MVVM Model View ViewModel模式。 Model层&#xff1a;存储数据和相关逻辑的模型。View层&#xff1a;在ArkUI中通常是Component装饰组件渲染的UI。ViewModel层&#xff1a;在ArkUI中&#xff0c;ViewModel是…

STM32智能机器人导航系统教程

目录 引言环境准备智能机器人导航系统基础代码实现&#xff1a;实现智能机器人导航系统 4.1 数据采集模块 4.2 数据处理与导航算法 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;机器人导航应用与优化问题解决方案与优化收尾与总结 1. 引言 智能机器…

Miniconda的常见用法——以Isaacgym为例

1. ubuntu24.04安装minicondda mkdir -p ~/miniconda3 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh解释下这段代码 bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3~/miniconda3/miniconda.sh: 指向Mi…

【Java安装】windows10+JDK21+IDEA

文章目录 一、JDK安装1. 下载完成后按照自己需要的位置安装2. 配置环境变量2.1 JAVA_HOME变量2.2 PATH配置 3. 验证4. helloworld 二、IDEA安装三、IDEA-HelloWorld 一、JDK安装 JDK安装链接 1. 下载完成后按照自己需要的位置安装 2. 配置环境变量 2.1 JAVA_HOME变量 安装…

unity知识点 专项四 一文彻底说清楚(锚点(anchor)、中心点(pivot)、位置(position)之间的关系)

一 概述 想要使UI控件在屏幕中达到正确的显示效果&#xff0c;比如自适应屏幕尺寸、固定边距等等&#xff0c;首先要理清楚几个基本概念和设置&#xff1a;锚点(anchor)、中心点(pivot)、位置(position)、UI缩放模式、父物件的transform设置 二 Anchor、Pivot与Position 2…

【Unity】UGUI的基本介绍

Unity的UGUI&#xff08;Unity User Interface&#xff09;是Unity引擎内自带的UI系统&#xff0c;官方称之为UnityUI&#xff0c;是目前Unity商业游戏开发中使用最广泛的UI系统开发解决方案。以下是关于Unity的UGUI的详细介绍&#xff1a; 一、UGUI的特点 灵活性&#xff1a…

**kwargs 字典解包传参的方式

字典解包传参 在Python中&#xff0c;****kwargs**是一种通过字典解包 (dictionary unpacking) 的方式进行参数传递的方式。它将一个字典的键值对解包并传递给函数的命名参数。 示例代码 kwargs实参: {name: "jordan", age: 18, score: [80, 85, 85]} get_info形…

【收藏】欧盟CE、美国FDA法规及标准查询常用网站

01 CE法规&标准查询网站 医疗器械主管部门的网站 网址: https://www.camd-europe.eu/ 简介: CAMD的全称是Competent authorities for medical devices&#xff0c;翻译成中文叫做医疗器械监管机构&#xff0c;实际上它指的是欧盟成员国医疗器械监管机构的联盟&#xff…

NAT:地址转换技术

为什么会引入NAT&#xff1f; NAT&#xff08;网络地址转换&#xff09;的引入主要是为了解决两个问题 IPv4地址短缺&#xff1a;互联网快速发展&#xff0c;可用的公网IP地址越来越少。网络安全&#xff1a;需要一种方法来保护内部网络不被直接暴露在互联网上。 IPv4 &…

王老师 linux c++ 通信架构 笔记(一)linux虚拟机的安装

&#xff08;0&#xff09;本门课程会涉及很多知识。在此集中记录&#xff0c;做笔记&#xff0c;也可能加入别的专栏。 &#xff08;1&#xff09; vmware 15 的下载和密钥上网查找。 ubuntu - 16 - 04 的版本才 800 M &#xff0c;来 csdn 找镜像 下载。 &#xff08;2&#…

23款奔驰S400升级原厂后排电动座椅调节有哪些功能

奔驰 S400 商务版升级后排电动座椅后&#xff0c;通常会具备以下功能&#xff1a; • 电动调节功能&#xff1a;可以通过按钮或控制面板来调节座椅的前后、上下、倾斜等位置&#xff0c;以获得最佳的舒适度。 • 座椅加热功能&#xff1a;在寒冷的天气中&#xff0c;座椅加热…

计算机网络之令牌环

1.令牌环工作原理 令牌环&#xff08;Token Ring&#xff09;是一种局域网&#xff08;LAN&#xff09;的通信协议&#xff0c;最初由IBM在1984年开发并标准化为IEEE 802.5标准。在令牌环网络中&#xff0c;所有的计算机或工作站被连接成一个逻辑或物理的环形拓扑结构。网络中…