vaeevaa 2023-12-22 15:42 采纳率: 50%
浏览 10
已结题

c++二分查找做法,力扣

img

img

img

img


请问是怎么回事呀,开始暴力解法两个for循环给超时了。用二分法这里面漏缺了什么呢。

  • 写回答

3条回答 默认 最新

  • 真相重于对错 2023-12-22 21:00
    关注
    
    #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;
    
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月30日
  • 已采纳回答 12月22日
  • 修改了问题 12月22日
  • 创建了问题 12月22日