Re: [闲聊] 每日leetcode

楼主: JIWP (JIWP)   2025-12-09 23:35:06
3583. Count Special Triplets
用两个array
一个rec纪录每个数字出现的次数
另外一个cnt每当x出现时cnt[x]就加上rec[2*x]
这样你每次答案都只要加上cnt[nums[i]/2]就好
golang :
func specialTriplets(nums []int) int {
ans, mod, n := 0, 1_000_000_007, len(nums)
rec := [200_002]int{}
cnt := [200_002]int{}
for i := 0; i < n; i++ {
a, b := nums[i]/2, nums[i]*2
if nums[i]&1 == 0 && rec[a] > 0 {
ans = (cnt[a] + ans) % mod
}
cnt[nums[i]] = (cnt[nums[i]] + rec[b]) % mod
rec[nums[i]] = (rec[nums[i]] + 1) % mod
}
return ans
}

Links booklink

Contact Us: admin [ a t ] ucptt.com