当前位置: 首页 > news >正文

C语言每日一题(66)三数之和

题目链接

力扣15.三数之和

题目描述

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

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

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

示例 1:

输入:nums = [-1,0,1,2,-1,-4]
输出:[[-1,-1,2],[-1,0,1]]
解释:
nums[0] + nums[1] + nums[2] = (-1) + 0 + 1 = 0 。
nums[1] + nums[2] + nums[4] = 0 + 1 + (-1) = 0 。
nums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0 。
不同的三元组是 [-1,0,1] 和 [-1,-1,2] 。
注意,输出的顺序和三元组的顺序并不重要。

示例 2:

输入:nums = [0,1,1]
输出:[]
解释:唯一可能的三元组和不为 0 。

示例 3:

输入:nums = [0,0,0]
输出:[[0,0,0]]
解释:唯一可能的三元组和为 0 。

提示:

  • 3 <= nums.length <= 3000
  • -105 <= nums[i] <= 105

思路分析

知识点:双指针、碰撞指针、排序

解析:

首先我们对于给定数组先进行排序,然后再使用双指针算法进行实现。

具体步骤

1.先进行排序。

2.从第一个数开始进行固定(当前位置为i)定义左右两个指针left,right,left每次从i的下一个位置开始,而right每次都从最右边开始。

3.每次求出left和right所指向的数的和,看看这个和是否等于i位置的倒数,如果大,right--,如果小,left++,直到找到匹配的数后,将结果存放到返回数组里,此时left++和right--同时进行。

4.为了避免出现重复结果,我们之前已经对数组进行了排序,假设此时left和right指向的值的和满足条件,又因为排序后连续的数会放到一起,所以left后面和right前面就会存在重复元素,此时我们需要跳过它,同时也要避免left>right,因为前面匹配后lefti已经移动了一次,如果用left后面的值当作判断的话,可能left的下一个元素是新元素,而此时left还在重复元素上,所以要有left前面的值进行判断,right也是一样,反过来就行。

5.匹配完后,i就要继续向下移动,而i也会存在重复元素的问题,也要记得查重。

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>> ret;//用于存储返回值sort(nums.begin(),nums.end());int n=nums.size();int i=0;while(i<n){if(nums[i]>0) break;//小优化,因为i位置大于0的话,后面不可能有数相加等于它int left=i+1,right=n-1,target=-nums[i];while(left<right){int sum=nums[left]+nums[right];if(sum>target) right--;else if(sum<target) left++;else{ret.push_back({nums[left],nums[right],nums[i]});left++;right--;while(left<right&&nums[left]==nums[left-1]) left++;while(left<right&&nums[right]==nums[right+1]) right--;}}i++;while(i<n&&nums[i]==nums[i-1]) i++;}return ret;}
};

相关文章:

C语言每日一题(66)三数之和

题目链接 力扣15.三数之和 题目描述 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答…...

vue3-element-admin实现同一个菜单多标签

原框架代码: 赵志江/huzhushan-vue3-element-admin 目录 TagsBar实现 实现同一个菜单多标签 device/detail/:id&#xff0c;不同参数时页面缓存删不掉的问题 TagsBar实现 在src/layout/components/下新建目录Tagsbar&#xff0c;新建index.vue <template><div c…...

第三十六节 Java 网络编程

网络编程是指编写运行在多个设备&#xff08;计算机&#xff09;的程序&#xff0c;这些设备都通过网络连接起来。 java.net包中J2SE的API包含有类和接口&#xff0c;它们提供低层次的通信细节。你可以直接使用这些类和接口&#xff0c;来专注于解决问题&#xff0c;而不用关注…...

DRF的认证、权限、限流、序列化、反序列化

DRF的认证、权限、限流、序列化、反序列化 一、认证1、直接用&#xff0c;用户授权2、认证组件源码 二、权限1. 直接使用&#xff0c;用户权限2.权限组件源码 三、序列化1. 序列化1.1 自定义Serailizer类序列化1.2 在视图APIView中使用1.3 自定义ModelSerializer类序列化1.4 不…...

解决:Cannot read properties of undefined (reading ‘validate‘)问题

问题&#xff1a;Element UI使用表单校验功能控制台出现Cannot read properties of undefined (reading validate)报错 解决&#xff1a;在 <el-form :model"form" :rules"rules">添加 ref"form"&#xff0c;form为自定义的表单名称 <…...

关于IP地址发展历程的详细探讨

IP地址的发展历程是一段不断演进、适应网络技术发展的历史。自互联网诞生以来&#xff0c;IP地址作为网络设备的唯一标识&#xff0c;扮演了至关重要的角色。以下是对IP地址发展历程的详细探讨。 在互联网的初期&#xff0c;主机数量相对较少&#xff0c;IP地址主要用于区分不…...

【LeetCode热题100】【二叉树】将有序数组转换为二叉搜索树

题目链接&#xff1a;108. 将有序数组转换为二叉搜索树 - 力扣&#xff08;LeetCode&#xff09; 取中间的数作为根节点&#xff0c;左边的数递归转换&#xff0c;右边的数递归转换 class Solution { public:TreeNode *sortedArrayToBST(vector<int> &nums) {retur…...

文心一言和GPT-4全面比较

自大型语言模型出现以来&#xff0c;人工智能在自然语言处理方面取得了显著进步。文心一言和GPT-4是当前最先进的两款语言模型&#xff0c;在业内广受关注。两者都具有强大的能力&#xff0c;但各有特点和优势。本文将从多个方面对这两个模型进行全面比较&#xff0c;以帮助读者…...

Mac的终端配置

Mac的终端配置 参考教程包管理工具 - Homebrew出现的问题用虚拟环境解决方案&#xff1a;直接将解释器的路径放过去错误方法&#xff1a;用find查找到虚拟环境安装的路径&#xff0c;其链接的是brew安装的python路径 编辑器没有报错&#xff0c;但是运行过程中仍然找不到pandas…...

制作一个RISC-V的操作系统十-Trap和Exception(流 mtvec mepc mcause mtval mstatus trap完整流程)

文章目录 流mtvecmepcmcausemtvalmstatustrap 初始化trap的top half&#xff08;硬件完成&#xff09;trap的bottom half&#xff08;软件完成&#xff09;从trap返回代码实现 流 控制流&#xff1a;程序控制的执行流 trap分为中断和异常 mtvec base&#xff1a;存储trap入…...

【爬虫开发】爬虫从0到1全知识md笔记第4篇:Selenium课程概要,selenium的介绍【附代码文档】

爬虫开发从0到1全知识教程完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;爬虫课程概要&#xff0c;爬虫基础爬虫概述,,http协议复习。requests模块&#xff0c;requests模块1. requests模块介绍,2. response响应对象,3. requests模块发送请求,4. request…...

对一个时间序列中的每个元素按照指定精度向上取整

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 对一个时间序列中的每个元素 按照指定精度向上取整 例如&#xff1a;对小时处理&#xff0c; 则9:01处理为10:00 Series.dt.ceil() 选择题 以下代码的输出结果中正确的是? import pandas as…...

51单片机+TN901非接触式红外测温设计论文与源码PCB等资料

1、摘要 温度测量技术应用十分广泛&#xff0c;而且在现代设备故障检测领域中也是一项非常重要的技术。但在某些应用领域中&#xff0c;要求测量温度用的传感器不能与被测物体相接触&#xff0c;这就需要一种非接触的测温方式来满足上述测温需求。本论文正是应上述实际需求而设…...

AI创业项目:AI旅游规划定制师

在当前的旅游市场中&#xff0c;个性化旅游规划成为越来越多旅行者的需求。然而&#xff0c;现行的定制旅行服务主要依赖于人工定制师&#xff0c;这一模式面临着信息不透明、价格弹性大等挑战。定制师在客户与服务供应商之间掌握着信息差&#xff0c;依靠这一优势获得收益&…...

win 安装 Stable Diffusion

注&#xff1a;本人使用的是 RTX2060 - 6G版 特别提醒&#xff1a;安装一定要 CUDA 和 PyTorch 版本能配套用&#xff0c;不然会有生成保存问题(我是这样的)&#xff0c;装完用 python -m xformers.info 这个看对应的版本 建议&#xff1a;有些命令安装在venv 虚拟机中做&…...

STM32F407+FreeRTOS+LWIP UDP组播

开发环境介绍&#xff1a; MCU&#xff1a;STM32F407ZET6 网卡&#xff1a;LAN8720A LWIP版本&#xff1a;V1.1.0 FreeRTOS 版本&#xff1a;V10.2.1 LAN8720A硬件原理图&#xff1a; 硬件连接说明&#xff1a; MII_RX_CLK/RMII_REF_CLK ------>PA1 …...

(源码+部署+讲解)基于Spring Boot + Vue的车位租赁系统设计与实现

前言 &#x1f497;博主介绍&#xff1a;✌专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅&#x1f447;&#x1f3fb; 2024年Java精品实战案例《100套》 &#x1f345;文末获取源码联系&#x1f345; &#x1f31f;…...

Lecture 2~4 About Filter

文章目录 空间域上的滤波器- 线性滤波器盒状滤波器Box Filter锐化Sharpening相关运算 vs. 卷积运算 Correlation vs. Convolution - 非线性滤波器高斯滤波器Gaussian filter - 实际问题- 纹理texture 频域上的滤波器 滤波的应用- 模板匹配- 图像金字塔 空间域上的滤波器 图像…...

【LINUX】Linux 命令大全:系统管理与网络操作指南

开始之前 Linux命令行&#xff0c;也称为终端&#xff0c;是Linux最强大的特性之一。通过命令行&#xff0c;用户可以执行几乎所有的任务&#xff0c;比如文件操作、程序安装、系统监控和网络配置等。了解这些基本命令&#xff0c;将帮助你更好地掌握Linux系统。 文件和目录操…...

Day50 动态规划 part11

Day50 动态规划 part11 123.买卖股票的最佳时机III 我的思路&#xff1a; 这道题考虑了交易次数 j&#xff08;最大次数为2&#xff09;&#xff0c;以及某天 i 应该买or卖股票&#xff08;两种状态&#xff09; 用三维数组表示 dp[i][j][0] – 第i天结束时&#xff0c;交易j…...

lite-avatar形象库部署教程:GPU共享模式下多租户数字人服务隔离方案

lite-avatar形象库部署教程&#xff1a;GPU共享模式下多租户数字人服务隔离方案 1. 项目概述 lite-avatar形象库是一个专业的数字人形象资产管理平台&#xff0c;基于HumanAIGC-Engineering/LiteAvatarGallery构建。这个库提供了150经过预训练的2D数字人形象&#xff0c;专门…...

我的LVDS信号有振铃?可能是端接电阻没选对!从仿真到实测的端接方案选择指南

LVDS信号振铃问题全解析&#xff1a;从端接电阻选择到实测验证 振铃现象是LVDS信号传输中最令人头疼的问题之一。当你在示波器上看到信号边沿出现振荡波形时&#xff0c;第一反应可能是怀疑PCB布局或信号源质量。但经验丰富的工程师都知道&#xff0c;80%的振铃问题根源在于端接…...

Qwen3-32B快速问答体验:128K长文本处理,效果实测

Qwen3-32B快速问答体验&#xff1a;128K长文本处理&#xff0c;效果实测 1. 为什么选择Qwen3-32B进行长文本处理 在当今信息爆炸的时代&#xff0c;处理长文本内容已成为许多企业和研究机构的刚需。Qwen3-32B作为一款320亿参数的大型语言模型&#xff0c;其128K的超长上下文处…...

s2-pro语音合成镜像快速上手:5分钟搞定专业级文字转语音

s2-pro语音合成镜像快速上手&#xff1a;5分钟搞定专业级文字转语音 1. 镜像简介与核心功能 s2-pro是Fish Audio开源的专业级语音合成模型镜像&#xff0c;能够将文本转换为自然流畅的语音。这个镜像特别适合需要快速部署文字转语音功能的开发者、内容创作者和企业用户。 1.…...

ncmdumpGUI终极指南:解锁你的音乐收藏,告别NCM格式束缚

ncmdumpGUI终极指南&#xff1a;解锁你的音乐收藏&#xff0c;告别NCM格式束缚 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经遇到过这样的情况&am…...

51页可编辑PPT | 农产品区块链溯源信息化平台整体解决方案

许多公司在数字化转型的过程中&#xff0c;常常面临数据孤岛、流程效率低下和客户体验不佳等问题。这些问题导致决策缓慢&#xff0c;难以快速响应市场变化&#xff0c;最终影响公司竞争力。方案的核心目标是帮助企业通过整合数据、优化流程和提升客户体验&#xff0c;实现数字…...

LightOnOCR-2-1B部署指南:快速搭建你的私有OCR识别服务

LightOnOCR-2-1B部署指南&#xff1a;快速搭建你的私有OCR识别服务 1. 认识LightOnOCR-2-1B 你是否遇到过需要从大量图片中提取文字的场景&#xff1f;比如扫描的合同、拍照的会议记录&#xff0c;或者历史档案数字化&#xff1f;传统的OCR解决方案要么识别准确率不高&#x…...

Qwen3-TTS-12Hz-1.7B-Base真实案例:为视障开发者生成无障碍编程教程语音

Qwen3-TTS-12Hz-1.7B-Base真实案例&#xff1a;为视障开发者生成无障碍编程教程语音 1. 这不是“读出来就行”的语音&#xff0c;而是真正听得懂代码的语音助手 你有没有想过&#xff0c;一段Python函数说明、一个React组件生命周期图解、甚至一段带缩进和符号的JSON结构&…...

通义千问1.5-1.8B-Chat-GPTQ-Int4 卷积神经网络(CNN)原理入门:模型辅助理解AI视觉基础

通义千问1.5-1.8B-Chat-GPTQ-Int4 卷积神经网络&#xff08;CNN&#xff09;原理入门&#xff1a;模型辅助理解AI视觉基础 你是不是经常看到“AI识别图片”、“自动驾驶看路”、“手机相册自动分类”这些功能&#xff0c;然后好奇它们是怎么做到的&#xff1f;其实&#xff0c…...

DeerFlow免运维部署:自动日志监控与服务启动检测

DeerFlow免运维部署&#xff1a;自动日志监控与服务启动检测 1. 认识你的深度研究助理&#xff1a;DeerFlow 想象一下&#xff0c;你有一个不知疲倦的研究助手。它能帮你搜索全网信息、分析复杂数据、撰写专业报告&#xff0c;甚至还能把枯燥的研究结果变成一段生动的播客。听…...