



请问是怎么回事呀,开始暴力解法两个for循环给超时了。用二分法这里面漏缺了什么呢。
#include<iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>
using namespace std;
class Solution {
public:
int lls(vector<int>& nums) {
unordered_map<int,int> map;
int result=-1;
for (int& c : nums) {
map[c]++;
}
sort(nums.begin(),nums.end());
for (auto& i : nums) {
int x=i;
int t=1;
do{
if (map[i * i] > 0)
{
i=i*i;
t++;
if(t>result)
result=t;
}
else
break;
}
while(true);
}
return result;
}
};
int main()
{
vector<int> nums{4,3,6,16,8,2};
Solution s;
auto ans=s.lls(nums);
cout<<ans;
}