Re: [闲聊] 每日leetcode

楼主: JIWP (JIWP)   2024-10-28 20:24:10
2501. Longest Square Streak in an Array
给一个nums,nums的subsequence称为square streak如果满足以下条件
(1)长度大于2
(2)在排序后,每个元素都是前一个元素的平方
请回传最长的square streak长度
思路:
两个想法
(1)
用一个hash map纪录nums所有元素
接着去看每个元素nums[i]的平方是否存在
存在就继续找nums[i]^4是否存在,依此类推
最后找出最大的长度
(2)
这个太笨了
就不讲
golang code :
func longestSquareStreak(nums []int) int {
hash_table := make(map[int]struct{})
for _, val := range nums {
hash_table[val] = struct{}{}
}
ans := 0
for _, val := range nums {
tmp := 1
for {
if _, ok := hash_table[val*val]; ok {
tmp++
val *= val
} else {
break
}
}
ans = max(tmp, ans)
}
if ans == 1{
return -1
}
return ans
}
作者: Furina (芙宁娜)   2023-10-28 20:24:00
大师

Links booklink

Contact Us: admin [ a t ] ucptt.com