C++ 之LeetCode刷题记录(三十五)

😄😊😆😃😄😊😆😃

开始cpp刷题之旅。

目标:执行用时击败90%以上使用 C++ 的用户。

在这里插入图片描述

15. 三数之和

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请

你返回所有和为 0 且不重复的三元组。

注意:答案中不可以包含重复的三元组。

解题:

第一题两数之和是一道简单题,这一个三数之和变成了中等题。

思路也比较简单,首先是要对输入的nums从小到大排序。

对排序后的nums取三个数并计算和,只要和为0,就将其作为一维vector推入二维中去。

当取的第一个数大于0时,就可以结束遍历了,因为三个数的和肯定会大于0,就不用再去做后续的操作了。

注意题目中有个要求,输出不可包含重复的三元组。

我们可以在做的时候加个判断,对排序后的nums中满足和为0的三元组,对左指针进行判断,判断其与加一的数是否相同;右指针同样的操作,与减一的数做判断是否相同;如果相同,那么说明会有重复,我们只需在判断条件中加入left++或right–即可,这里的判断要用while进行持续判断,不能使用if。

思路比较简单,代码如下:

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) break;
            if (i > 0 && nums[i] == nums[i - 1]) continue;
            int left = i + 1, 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 (left < right && nums[left] == nums[left + 1]) left++;
                    while (left < right && nums[right] == nums[right - 1]) right--;
                    right--;
                    left++;
                }
            }
        }
        return result;
    }
};

看一下提交记录:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/415194.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(2024,Sora 逆向工程,DiT,LVM 技术综述)Sora:大视觉模型的背景、技术、局限性和机遇回顾

Sora: A Review on Background, Technology, Limitations, and Opportunities of Large Vision Models 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 1. 简介 2. 背景 2.1…

「算法」前缀和

前缀和主要解决求数组中某段区间元素和的问题&#xff0c;使用前缀和解决问题的步骤如下: 预处理一个前缀和数组使用这个数组 一维前缀和 现在有一个一维数组nums 预处理前缀和数组 定义一个数组 dp[]&#xff0c;dp[i]表示 nums 中 [0,i-1] 区间的元素和&#xff0c;那我们…

《互联网的世界》第二讲-最短路径优先

昨天讲 dns 时讲过&#xff0c;“你问一个当地人最近的厕所在哪&#xff0c;路人给你一个地址…”&#xff0c;可是只有地址还不够&#xff0c;如何到达那里呢&#xff1f;这是本节的内容。 自然的方式是&#xff0c;一边走一边问&#xff0c;根据路人的指示继续一边走一边问…

Cap0:TensorRT环境搭建

文章目录 1、安装TensorRT1.1、下载TensorRT压缩包1.2、配置环境变量 2、测试2.1、测试源码2.2、编译源码 1、安装TensorRT TensorRT是针对NVIDIA显卡设备的加速方案&#xff0c;你要使用TensorRT则证明你有一定的深度学习基础&#xff0c;那么在你的Ubuntu上配置好显卡驱动、…

Vue.js实战:构建一个简单的学生管理系统

摘要&#xff1a; 本文将引导你使用Vue.js框架来构建一个完整的学生管理系统。我们将从环境搭建开始&#xff0c;逐步介绍Vue的核心概念、组件创建、数据管理、事件处理、路由配置以及项目构建等关键步骤。通过实际操作&#xff0c;你将能够掌握Vue.js的基础知识&#xff0c;并…

基础!!!吴恩达deeplearning.ai:多标签分类与高级优化方法

以下内容有任何不理解可以翻看我之前的博客哦&#xff1a;吴恩达deeplearning.ai专栏 文章目录 智能驾驶高级优化方法梯度下降算法回顾 Adam算法(Adaptive Moment estimation)模型部分编译部分拟合部分 之前我们已经学习了多分类问题的神经网络的搭建。而有一种特殊的分类问题…

【亚马逊云新春特辑③】构生成式 AI 文生图工具之借助ControlNet进行AI绘画创作【使用OpenPose优化人物二维码】

文章目录 2.1 使用OpenPose优化人物二维码1&#xff09;数据及环境准备2&#xff09;导入骨架数据并启用OpenPose控制单元3&#xff09;导入二维码并生成美化后的二维码图片 2.1 使用OpenPose优化人物二维码 在上一节体验到了使用ControlNet并结合QR Code生成二维码&#xff0…

雾锁王国服务器官方配置要求说明

雾锁王国/Enshrouded服务器CPU内存配置如何选择&#xff1f;阿里云服务器网aliyunfuwuqi.com建议选择8核32G配置&#xff0c;支持4人玩家畅玩&#xff0c;自带10M公网带宽&#xff0c;1个月90元&#xff0c;3个月271元&#xff0c;幻兽帕鲁服务器申请页面 https://t.aliyun.com…

自动从金蝶取数,做BI报表的工具,快来长见识!

技术越进步&#xff0c;分析工具越智能&#xff0c;如今做数据分析、数据可视化&#xff0c;不仅能连接金蝶系统&#xff0c;更能直接从金蝶ERP中取数做分析&#xff0c;自动输出BI数据可视化分析报表。这就是奥威-金蝶BI方案。 是骡子是马&#xff0c;牵出来遛遛就知道&#…

STM32标准库开发—硬件SPI外设

SPI外设简介 SPI1与SPI2所挂载的总线位置不一样&#xff0c;所以时钟频率也不一样&#xff0c;SPI2挂载在APB1时钟频率为36MHZ是SPI1的一半 I2S是一种音频传输协议&#xff0c;适用于STM32大容量产品 一般来说串口发送数据时是低位先行&#xff0c;SPI通信是高位先行 SPI框图 发…

看完这篇爽文我终于学会了示波器(一)

大家好&#xff0c;我是砖一。 示波器是电子行业的工程师的“老熟人”了&#xff0c;有句老话说&#xff1a;电子工程师不能失去示波器&#xff0c;就像西方不能失去耶路撒冷&#xff0c;足以见得示波器的重要地位。今天讲解一下基础知识篇&#xff0c;话不多说&#xff0c;直…

Day 4.进程间的通信:管道和通信

进程间的通信 1.管道 2.信号 3.消息队列 4.共享内存 5.信号灯 6.套接字 1.管道&#xff08;一次读4k&#xff0c;一共能读16次&#xff09;64k 1.无名管道 无名管道只能用于具有亲缘关系的进程间的通信 pipe int pipe(int pipefd[2]); 功能&#xff1a;创建一个无名…

云原生高级第一次作业

目录 实验需求&#xff1a; 第一个实验步骤&#xff1a; openEuler 二进制方式安装MySQL 8.0.x 1.首先需要获取软件包 2.然后安装tar和xz格式可进行解压工具 3.接下来就是安装MySQL 4.配置环境变量 5.登入并修改密码 6.停止服务脚本 7.提供配置文件 8.进入/etc/my.cnf…

如何利用动态代理IP进行海外社媒推广?

动态代理IP&#xff0c;顾名思义&#xff0c;是一种可以动态变化的IP地址。与传统的静态IP地址不同&#xff0c;动态代理IP在每次网络请求时都能提供一个新的IP地址。在进行海外推广活动时&#xff0c;它的应用非常关键。 动态代理IP的工作原理基于一个庞大的IP地址池。当用户…

IPD(集成产品开发)—核心思想

企业发展到一定阶段就会遇到管理瓶颈&#xff0c;IPD流程是一种高度结构化的产品开发流程&#xff0c;它集成了业界很多优秀的产品开发方法论&#xff0c;像搭积木一样的组合成一种非常有效的流程。如果我们能根据企业的规模和行业特点&#xff0c;对全流程的IPD进行合适的裁剪…

代码随想录刷题笔记-Day25

1. 分割回文串 131. 分割回文串https://leetcode.cn/problems/palindrome-partitioning/ 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 示例 1&#xf…

端智能:面向手机计算环境的端云协同AI技术创新

近年来&#xff0c;随着移动端设备软硬件能力的进步&#xff0c;移动端的算力有了很大提升&#xff0c;同时面向移动端的机器学习框架和模型轻量化技术越来越成熟&#xff0c;端上的AI能力逐渐进入大众视野&#xff0c;端智能在电商领域也开始逐步走向规模化应用。通过持续探索…

动态规划之解码方法【LeetCode】

动态规划之解码方法 91. 解码方法解法1解法2 91. 解码方法 91. 解码方法 解法1 状态表示&#xff08;这是最重要的&#xff09;&#xff1a;dp[i]表示以第i个字符为结尾&#xff0c;解码方法的总数。 状态转移方程&#xff08;最难的&#xff09;&#xff1a;根据最近的一步来…

故障诊断 | 一文解决,PSO-BP粒子群算法优化BP神经网络模型的故障诊断(Matlab)

文章目录 效果一览文章概述模型描述源码设计参考资料效果一览 文章概述 故障诊断 | 一文解决,PSO-BP粒子群算法优化BP神经网络模型的故障诊断(Matlab) 粒子群优化算法(Particle Swarm Optimization, PSO)是一种群体智能优化算法,用于求解优化问题。BP神经网络是一种用于模…

【机器学习】线性回归模型(Linear Regression)

&#x1f338;博主主页&#xff1a;釉色清风&#x1f338;文章专栏&#xff1a;机器学习&#x1f338;今日语录:温柔的一半是知识&#xff0c;没有知识的涵养撑不起你想要的风骨。 ☘️0文章预览 本系列文章主要是根据吴恩达老师的机器学习课程以及自己的理解整合而成&#xf…