2024-11-30:质数的最大距离。用go语言,给定一个整数数组 nums,请找出两个(可以是相同的)质数在该数组中的下标之间的最大距离。 提示: nums的长度在[1,3*10^5]之间。 num
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:
题目来自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完整代码如下:
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
}
}
return last - first
}
func main() {
nums := []int{4, 2, 9, 5, 3}
fmt.Println(maximumPrimeDifference(nums))
}
Rust完整代码如下:
fn maximum_prime_difference(nums: Vec<i32>) -> i32 {
let primes = [
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,
];
let prime_set: std::collections::HashSet<i32> = primes.iter().cloned().collect();
let n = nums.len();
let mut first = -1;
for i in 0..n {
if prime_set.contains(&nums[i]) {
first = i as i32;
break;
}
}
let mut last = -1;
for i in (0..n).rev() {
if prime_set.contains(&nums[i]) {
last = i as i32;
break;
}
}
if first == -1 || last == -1 {
return 0; // 如果不存在质数
}
last - first
}
fn main() {
let nums = vec![4, 2, 9, 5, 3];
println!("{}", maximum_prime_difference(nums));
}
公众号:福大大架构师每日一题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
2023-11-30 文心一言 VS 讯飞星火 VS chatgpt (146)-- 算法导论12.2 1题
2022-11-30 2022-11-30:小红拿到了一个仅由r、e、d组成的字符串 她定义一个字符e为“好e“ : 当且仅当这个e字符和r、d相邻 例如“reeder“只有一个“好e“,前两个e都不是“好e“,只有第三个
2021-11-30 2021-11-30:给定一个数组arr,当拿走某个数a的时候,其他所有的数都+a, 请返回最终所有数都拿走的最大分数。 比如: [2,3,1], 当拿走3时,获得3分,数组变成[5,4]; 当拿走5