美文网首页
从两数之和开启编程大门

从两数之和开启编程大门

作者: 艺术类架构师 | 来源:发表于2023-03-31 23:36 被阅读0次

    各位大神,你们好,力扣第一题是两数之和,其实这道题别看简单,但是是启蒙,出在第一题是合理的

    能想到的解法是,暴力

    for(a in nums)

    for(b in nums)

    if(nums[a]+nums[b]==target and a!=b)

    return 结果

    解法二排序+双指针

    sort(nums.begin(),nums.end())

    int i=0,b=nums.size()-1;

    do{

      if(nums[i]+nums[j]<target){

    i++;

    }

    if(nums[i]+nums[j]>target){

    j--;}

    else 返回结果

    }

    while(i<j)

    解法三 排序加二分法

    sort(nums.begin(),nums.end());

    for(int i=0;i<nums.size()-1;i++){

      int j=binary_search(target-nums[i]);

    if(j!=-1)返回结果

    }

    解法四 hash表

    set<int> set;

    for(auto d:nums){

    if(set.find(target-d)!=set.end())

    return {d,target-d}};

    set.add(d);

    }

    方法五 拆分target为两数之和,然后再从数组里去映射,这属于穷举了

    int a=0,b=0;

    for(a=-1000000000;a<=target/2;a++){

    b=target-a;

    }

    方法六 ChatGPT解决

    方法七:多线程处理

    方法八:分治思想

    方法九转换为二进制累加

    方法十 你的办法是?

    相关文章

      网友评论

          本文标题:从两数之和开启编程大门

          本文链接:https://www.haomeiwen.com/subject/cxlkddtx.html