写在前面
刷过leetcode题目的同学应该知道,它的题目总是有超时限制。本人在做leetcode周赛的时间经常遇到,今天又遇到了一次
原题:6916. 和等于目标值的质数对
在思考好长时间和看别人答案的时候发现了一个注释
然后果断将预处理部分放到init中,修改之后
在耗时和内存方面,都超过了100%的用户。
本人觉得这是一个设计缺陷,init的耗时和内存应该也应该算到算法中,当然目前leetcode没有算进去,那我们就可以利用这一点,解决超时问题。
最后贴上我的代码
// https://leetcode.cn/contest/weekly-contest-352/problems/prime-pairs-with-target-sum/
const (
Max = 1000001
)
var isPrime map[int]bool
func init() {
isPrime = make(map[int]bool, Max)
for i := 0; i <= Max; i++ {
isPrime[i] = true
}
for i := 2; i <= Max; i++ {
if isPrime[i] {
begin := 2
for j := i * begin; j <= Max; j = i * begin {
isPrime[j] = false
begin += 1
}
}
}
}
func FindPrimePairs(n int) [][]int {
result := make([][]int, 0)
for i := 2; i <= n/2; i++ {
if isPrime[i] && isPrime[n-i] {
result = append(result, []int{i, n - i})
}
}
return result
}