首页 > 其他分享 >15. 三数之和

15. 三数之和

时间:2025-01-13 22:43:14浏览次数:1  
标签:right 15 nums ++ 三数 vector result left

题目

这道题着实不知道怎么动笔,看了卡哥思路,很详细,其中的去重小细节讲的非常好,里面讲了两种方法,一种是不太推荐的哈希解法(因为题目要求结果的三元组去重,所以哈希解法不太推荐,但是这个解法我也没太看懂),一种是更推荐的双指针解法。

看了卡哥代码敲的:

class Solution {
public:
    vector<vector<int>> threeSum(vector<int>& nums) {
        vector<vector<int>> result;
        sort(nums.begin(), nums.end());
        for (int i = 0; i < nums.size(); ++i)
        {
            if (nums[i] > 0)
                return result;
            if (i > 0 && nums[i] == nums[i - 1])
                continue;
            int left = i + 1;
            int right = nums.size() - 1;
            while (left < right)
            {
                if (nums[i] + nums[left] + nums[right] > 0)
                    --right;
                else if (nums[i] + nums[left] + nums[right] < 0)
                    ++left;
                else
                {
                    result.push_back(vector<int>{nums[i], nums[left], nums[right]});
                    while (right > left && nums[right] == nums[right - 1])  --right;
                    while (right > left && nums[left] == nums[left + 1])    ++left;
                    --right;
                    ++left;
                }
            }
        }
        return result;
    }
};

标签:right,15,nums,++,三数,vector,result,left
From: https://www.cnblogs.com/hisun9/p/18669563

相关文章

  • LeetCode:215.数组中的第K个最大元素
    LeetCode:215.数组中的第K个最大元素解题思路看到“第K个最大元素”。考虑选择使用最小堆。解题步骤构建一个最小堆,并依次把数组的值插入堆中。当堆的容量超过K,就删除堆顶。插入结束后,堆顶就是第K个最大元素。leetcode在线运行测试可能是用本地环境跑分...有缓存卡大数有er......
  • LeetCode Top Interview 150 - Stack
    Somescenarioswhereastackistypicallytheappropriatedatastructuretouse:1.ParenthesesMatching:Problemsthatrequirecheckingforbalancedparenthesesorbracketsoftenutilizestackstoensurethateveryopeningbrackethasacorrespondingclo......
  • P1540 [NOIP2010 提高组] 机器翻译
    题目背景NOIP2010提高组T1题目描述小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就......
  • PTA 团体程序设计天梯赛 15分题 048
    L1-048矩阵A乘以B(15)题目要求给定两个矩阵A和B,要求你计算它们的乘积矩阵AB。需要注意的是,只有规模匹配的矩阵才可以相乘。即若A有Ra​行、Ca​列,B有Rb​行、Cb​列,则只有Ca​与Rb​相等时,两个矩阵才能相乘。输入格式输入先后给出两个矩阵A和B。对于每个矩阵,首先在一行中......
  • 国产人形机器人街头亮相海外走红,15万元售价引专家质疑
    据量子位报道,近日,一款国产机器人深圳街头散步的视频火到了国外。这款机器人在周围都是围观群众的情况下轻松走出去十几米。英伟达的科学家JimFan都有点怀疑这是不是AI生成的。据网友透露,这款机器人来自众擎机器人,刚发布半个月,最近还去参加了CES。其诞生于深圳,背后公司成......
  • springboot短视频推荐系统-计算机设计毕业源码21503
    基于协同过滤算法的短视频推荐系统摘 要本论文基于协同过滤算法,旨在设计并实现一种基于SpringBoot框架的短视频推荐系统。该系统主要分为平台用户和管理员两类角色,用户可以注册、登录、浏览短视频内容,并根据个人兴趣收藏喜爱的视频。管理员则可以管理系统数据、用户和内容......
  • springboot短视频推荐系统-计算机设计毕业源码21503
    基于协同过滤算法的短视频推荐系统摘 要本论文基于协同过滤算法,旨在设计并实现一种基于SpringBoot框架的短视频推荐系统。该系统主要分为平台用户和管理员两类角色,用户可以注册、登录、浏览短视频内容,并根据个人兴趣收藏喜爱的视频。管理员则可以管理系统数据、用户和内容......
  • P11559 【MX-X7-T0】[LSOT-3] 嗯欧哎
    用函数实现等级映射multiset打表比对include<bits/stdc++.h>usingnamespacestd;constintN=10010;intfun(intn){if(n>=85)return5;elseif(n>=45)return4;elseif(n>=25)return3;elseif(n>=1)return2;elsereturn1;}intmain(){multiset......
  • 江南鹤微信hook最新版 3.9.12.15功能列表
    详询微信weixinhook主动调用登录刷新登录二维码注销登录退出微信当前登录帐号信息联系人获取好友列表获取指定好友信息获取好友简要信息_协议获取好友详细信息_协议指量获取好友信息_协议修改好友备注添加好友分享的名片同意加好友请求删除好友搜索微信用户添......
  • leetcode115 不同的子序列
    给定两个字符串s和t,统计并返回在s的子序列中t出现的个数,结果对1E9+7取模。1<=|s|,|t|<=1000分析:判断两字符串的最后一个字符:如果相同,则可以选择匹配或者不匹配;如果不同,则只能选择不匹配。初始条件:t为空时答案为1。mintdp[1005][1005];classSolution{public:intnumDi......