LCR 007. 三数之和

news/2024/9/27 18:36:53 标签: leetcode, 算法, 职场和发展

文章目录

  • 1.题目
  • 2.思路
  • 3.代码


1.题目

LCR 007. 三数之和

给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 abc *,*使得 a + b + c = 0 ?请找出所有和为 0不重复 的三元组。

示例 1:

输入:nums = [-1,0,1,2,-1,-4]
输出:[[-1,-1,2],[-1,0,1]]

示例 2:

输入:nums = []
输出:[]

示例 3:

输入:nums = [0]
输出:[]

2.思路

首先确定一个元素,然后剩下两个元素从两端开始遍历,注意防止越界并检查当前 nums[left] 是否与前一个 nums[left-1] 相同。如果两者相同,说明当前这个 nums[left] 已经被计算过了,同样对于第一个元素,保证并列的两个元素不同

3.代码

class Solution {
public:
    vector<vector<int>> threeSum(vector<int>& nums) {
        vector<vector<int>> ret;
        sort(nums.begin(), nums.end());
        for(int i = 0; i < nums.size(); ++i){
            // 对第一个元素去重
            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){
                    ret.push_back({nums[i], nums[left], nums[right]});
                    --right, ++left;
                    //对第二第三个元素去重。注意越界问题
                    while(left < right && nums[left] == nums[left-1]) ++left;
                    while(left < right && nums[right] == nums[right+1]) --right;
                }else if(nums[i]+nums[left]+nums[right] > 0){
                    --right;
                }else{
                    ++left;
                }
            }
        }
        return ret;
    }
};


http://www.niftyadmin.cn/n/5679268.html

相关文章

【达梦数据库】存储过程统计模式下表信息-SQL改写

背景 在一次Oracle迁移Dm的过程中&#xff0c;源库&目的库大小写均敏感&#xff0c;执行客户提供的SQL脚本的过程中发现&#xff0c;表ip_address被系统默认成了表IP_ADDRESS。 经过分析&#xff0c;客户提供的SQL没有使用双引号&#xff0c;来确保Oracle和Dm数据库按照指…

【多样化的思想】基于执行档案的测试

下面我们讨论另一种关于多样性的观点。我们知道&#xff0c;对被测对象而言&#xff0c;测试输入空间代表的是各种可能的外部环境条件。如果两个测试输入点距离比较远&#xff0c;说明在这两个点上&#xff0c;被测对象所面对的外部环境条件很不一样&#xff0c;所以我们说&…

C++简单缓冲区类设计

目录 1.引言 2.静态缓冲区 3.动态缓冲区 4.数据引用类 5.自动数据引用类 6.几种缓冲区的类关系图 7.注意事项 8.完整代码 1.引言 在C中&#xff0c;设计静态和动态缓冲区类时&#xff0c;需要考虑的主要差异在于内存管理的方式。静态缓冲区类通常使用固定大小的内存区域…

C:数据在内存中的存储

目录 一、整数在内存中的存储 二、大小端字节序 2.1 大小端字节序的介绍 2.2 为什么有大小端之分&#xff08;了解即可&#xff09; 2.3 判断大小端的代码实现 三、浮点数的数据存储 3.1 浮点数的存储 3.2 浮点数存储的过程 3.2.1 对于有效数字M 3.2.1 对于指数E 3.3…

前端导出页面PDF

import html2canvas from html2canvas import { jsPDF } from jspdf import { Loading } from element-ui let downloadLoadingInstance// 导出页面为PDF格式---使用插件html2canvas和jspdf插件 export function exportPDF(fileName, node) {downloadLoadingInstance Loading.…

药物临床试验机构备案信息数据库查询方法(支持数据下载)

药物临床试验机构备案管理信息平台是一个由国家药品监督管理局组织建立的系统&#xff0c;该平台向社会开放&#xff0c;提供药物临床试验机构的省份&地区、备案号、机构名称、地址、联系人、联系方式、备案状态、备案专业和主要研究者(专业名称、主要研究者、职称、专业备…

苹果手机如何录屏?IOS 自带工具与嗨格式录屏大师 APP 详解

在当今数字化时代&#xff0c;手机录屏功能变得越来越重要&#xff0c;无论是记录游戏精彩瞬间、制作教学视频&#xff0c;还是分享操作演示&#xff0c;都离不开它。今天&#xff0c;我们就来详细了解一下手机如何录屏视频&#xff0c;重点介绍 IOS 自带录屏工具以及嗨格式录屏…

webpack与vite读取base64图片

某些特殊场景下&#xff0c;需要使用base64渲染图片 data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBxETEhUSEBAVFhIXEhIXFRYYFxcVFhYWFxYWFxcXFRcYHSggGBonIBcVITEhJSkrLi4uGB8zODMsOCgtLysBCgoKDg0OGxAQGjMlHyUrLTcuKzMrNy0tLi0tKzUtLS0vLS4rKysrLisrLTYtLTU…