Re: [閒聊] 每日leetcode

看板Marginalman作者 (早瀬ユウカの体操服 )時間9月前 (2025/03/07 21:35), 9月前編輯推噓0(000)
留言0則, 0人參與, 最新討論串1360/1552 (看更多)
https://leetcode.com/problems/closest-prime-numbers-in-range 2523. Closest Prime Numbers in Range 給你兩個數字left和right,找出兩個數字介於left和right,兩者數字不同且是質數,這 兩個數字的差需要最小,如果有多個一樣的差則取nums1比較小的,找不到返回{-1,-1}。 思路: 1.先算出到right為止的所有質數 2.把質數兩兩匹配,然後取最小且最早出現的一對 Java Code: ------------------------------------------------------- class Solution { public int[] closestPrimes(int left, int right) { boolean[] notPrime = new boolean[right + 1]; notPrime[1] = true; for (int i = 2; i <= right; i++) { if (notPrime[i]) continue; int curr = i + i; while (curr <= right) { notPrime[curr] = true; curr += i; } } Integer num1 = null; Integer num2 = null; int[] res = null; for (int i = left; i <= right; i++) { if (!notPrime[i]) { if (num1 == null) { num1 = i; } else if (num2 == null) { num2 = i; res = new int[]{num1, num2}; } else { if (res[1] - res[0] > num2 - num1) { res[0] = num1; res[1] = num2; } num1 = num2; num2 = i; } } } if (num1 != null && num2 != null) { if (res[1] - res[0] > num2 - num1) { res[0] = num1; res[1] = num2; } return res; } return new int[]{-1, -1}; } } ------------------------------------------------------- -- https://i.imgur.com/ZfdGodg.jpeg
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.158.101.161 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1741354512.A.55A.html ※ 編輯: Rushia (49.158.101.161 臺灣), 03/07/2025 21:39:03
文章代碼(AID): #1dolOGLQ (Marginalman)
討論串 (同標題文章)
文章代碼(AID): #1dolOGLQ (Marginalman)