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
}