前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >2024-11-30:质数的最大距离。用go语言,给定一个整数数组 nums,请找出两个(可以是相同的)质数在该数组中的下标之间

2024-11-30:质数的最大距离。用go语言,给定一个整数数组 nums,请找出两个(可以是相同的)质数在该数组中的下标之间

作者头像
福大大架构师每日一题
发布2024-12-03 21:12:53
发布2024-12-03 21:12:53
27900
代码可运行
举报
运行总次数:0
代码可运行

2024-11-30:质数的最大距离。用go语言,给定一个整数数组 nums,请找出两个(可以是相同的)质数在该数组中的下标之间的最大距离。

提示:

nums的长度在[1,3*10^5]之间。

nums的每个元素的值在[1,100]。

输入保证 nums 中至少有一个质数。

输入:nums = [4,2,9,5,3]。

输出:3。

解释:nums[1]、nums[3] 和 nums[4] 是质数。因此答案是 |4 - 1| = 3。

答案2024-11-30:

chatgpt[1]

题目来自leetcode3115。

大体步骤如下:

1.定义一个函数 maximumPrimeDifference(nums []int) int 用于计算质数的最大距离。其中,根据给定的质数列表 primes 和数组 nums:

  • • 创建一个 map primeSet 用于存储质数的出现情况。
  • • 遍历 nums 数组,找到第一个质数的下标,并记录在变量 first 中。
  • • 再次遍历 nums 数组,找到最后一个质数的下标,并记录在变量 last 中。
  • • 返回最后一个质数的下标与第一个质数的下标之间的距离。

2.在主函数 main 中,定义一个示例数组 nums := []int{4, 2, 9, 5, 3}。

3.调用 maximumPrimeDifference(nums) 函数,并输出结果。

总体时间复杂度为 O(n), 其中 n 为数组 nums 的长度。

总体空间复杂度为 O(1),并不随输入规模变化。

Go完整代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
package main

import(
"fmt"
)

func maximumPrimeDifference(nums []int)int{
    primes :=[]int{2,3,5,7,11,
13,17,19,23,29,
31,37,41,43,47,
53,59,61,67,71,
73,79,83,89,97}
    primeSet :=make(map[int]struct{})
for _, v :=range primes {
        primeSet[v]=struct{}{}
}
    n :=len(nums)
    first :=0
for i :=0; i < n; i++{
if _, ok := primeSet[nums[i]]; ok {
            first = i
break
}
}
last:=0
for i := n -1; i >=0; i--{
if _, ok := primeSet[nums[i]]; ok {
last= i
break
}
}
returnlast- first
}

func main(){
    nums :=[]int{4,2,9,5,3}
    fmt.Println(maximumPrimeDifference(nums))
}

Rust完整代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
fn maximum_prime_difference(nums:Vec<i32>)->i32{
letprimes=[
2,3,5,7,11,13,17,19,23,29,
31,37,41,43,47,53,59,61,67,
71,73,79,83,89,97,
];

letprime_set: std::collections::HashSet<i32>= primes.iter().cloned().collect();
letn= nums.len();

letmut first=-1;
foriin0..n {
if prime_set.contains(&nums[i]){
            first = i asi32;
break;
}
}

letmut last=-1;
foriin(0..n).rev(){
if prime_set.contains(&nums[i]){
            last = i asi32;
break;
}
}

if first ==-1|| last ==-1{
return0;// 如果不存在质数
}

    last - first
}

fnmain(){
letnums=vec![4,2,9,5,3];
println!("{}",maximum_prime_difference(nums));
}
引用链接

[1] chatgpt: https://chatbotsplace.com/?rc=nnNWSCJ7EP

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-11-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 福大大架构师每日一题 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大体步骤如下:
  • Go完整代码如下:
  • Rust完整代码如下:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档