leetcode刷题遇到的一个大坑


写在前面

刷过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
}

文章作者: Alex
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Alex !
  目录