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

leetcode 二数之和 三数之和 四数之和

leetcode 二数之和 三数之和 四数之和
又到了不想写博客的环节,不想归不想,有些事情还是要做的,今天总结的是多数之和的问题。

二数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。
思考:对于这道题其实很简单,不过要想到利用哈希法来做可能有点难度,一来对哈希结构相关的语法不熟悉,而来贪图方便,就用两个for循环解决了,这里需要注意的是两个for循环的起始位置,需要遍历到所有的可能性。
法一:

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {for(int i=0;i<nums.size()-1;i++){for(int j=i+1;j<nums.size();j++){if(nums[i]+nums[j]==target){return {i,j};}}}return {};}
};

法二:

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int,int> umap;for(int i=0;i<nums.size();i++){auto iter=umap.find(target-nums[i]);if(iter!=umap.end()){return {iter->second,i};}else{umap.insert(pair<int,int>(nums[i],i));}}return {};}
};

三数之和

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

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

注意:答案中不可以包含重复的三元组。
思考:这道题按照正常的思路也可以,不过剪枝和去重的时候比较麻烦,容易少写或者多写,所以最好按照双指针的写法来写

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;int right=nums.size()-1;while(right>left){if(nums[i]+nums[left]+nums[right]>0) right--;else if(nums[i]+nums[left]+nums[right]<0) left++;else{result.push_back({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;}
};

四数之和

给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):

0 <= a, b, c, d < n
a、b、c 和 d 互不相同
nums[a] + nums[b] + nums[c] + nums[d] == target
你可以按 任意顺序 返回答案 。
思考:这道题和三数之和的解法很像,也是双指针,这样去重时不容易出错,但是有个注意的点就是在判断第二个数时需要参照第一个数的写法

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

相关文章:

leetcode 二数之和 三数之和 四数之和

leetcode 二数之和 三数之和 四数之和 又到了不想写博客的环节&#xff0c;不想归不想&#xff0c;有些事情还是要做的&#xff0c;今天总结的是多数之和的问题。 二数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target …...

制衣厂生产ERP系统怎么样?制衣厂生产ERP软件哪个好

有很多的制衣厂在订单处理、物料、仓储、销售、仓储、物料编码、车间成本核算、计件工资核算等方面还存在不少改进空间。 而经过多年的发展&#xff0c;现如今制衣行业的竞争比较激烈&#xff0c;如何提升各业务部门协同效率&#xff0c;减少车间物料损耗&#xff0c;简化生产…...

安装 DevEco Studio 后不能用本地 Node.js 打开

安装 DevEco Studio 后第一次打开时&#xff0c;不能用本地 Node.js 打开 答&#xff1a;因为本地 Node.js 文件夹名字中有空格 Node.js路径只能包含字母、数字、“。”、“_”、“-”、“:”和“V” 解决方法&#xff1a; 1.修改文件夹名称 2.重新下载 注意&#xff1a;找一…...

AppLink+WMS,实现仓储管理一体化

WMS像全能的库管员&#xff0c;可以在线还原真实仓库&#xff0c;让企业进行科学化、条理化、俯视化的仓库管理。 随着移动互联网和物流行业的快速发展&#xff0c;如何提高仓储管理的效率和准确性成为了企业关注的焦点。在这个背景下&#xff0c;结合AppLink和WMS系统&#x…...

如果是你,你选SOHO还是跟单?

昨天看到有人在讨论外贸跟单和外贸业务&#xff0c;谁的压力更大的问题&#xff1f;她们讨论的这个问题&#xff0c;源于一个年近四十准备二胎的宝妈&#xff0c;她做跟单十来年了&#xff0c;最近失业迷茫中&#xff0c;在纠结是否要SOHO&#xff1f;作为一个在工贸一体工厂做…...

大语言模型--能力

能力 大语言模型 能力从语言模型到任务模型的转化语言建模总结 从语言模型到任务模型的转化 在自然语言处理的世界中&#xff0c;语言模型 p p p是一种对代币序列 x 1 : L x_{1:L} x1:L​这样的模型能够用于评估序列&#xff0c;例如 p ( t h e , m o u s e , a t e , t h e ,…...

安装LLaMA-Factory微调chatglm3,修改自我认知

安装git clone https://github.com/hiyouga/LLaMA-Factory.git conda create -n llama_factory python3.10 conda activate llama_factory cd LLaMA-Factory pip install -r requirements.txt 之后运行 单卡训练&#xff0c; CUDA_VISIBLE_DEVICES0 python src/train_web.py…...

以太网协议与DNS

以太网协议 以太网协议DNS 以太网协议 以太网用于在计算机和其他网络设备之间传输数据,以太网既包含了数据链路层的内容,也包含了物理层的内容. 以太网数据报: 其中目的IP和源IP不是网络层的目的IP和源IP,而是mac地址.网络层的主要负责是整体的转发过程,数据链路层负责的是局…...

Spring Boot的日志

打印日志 打印日志的步骤: • 在程序中得到日志对象. • 使用日志对象输出要打印的内容 在程序中得到日志对象 在程序中获取日志对象需要使用日志工厂LoggerFactory,代码如下: package com.example.demo;import org.slf4j.Logger; import org.slf4j.LoggerFactory;public c…...

Cisco Packet Tracer配置命令——交换机篇

交换机VLAN配置 在简单的网络环境中&#xff0c;当交换机配置完端口后&#xff0c;即可直接应用&#xff0c;但若在复杂或规模较大的网络环境中&#xff0c;一般还要进行VLAN的规划&#xff0c;因此在交换机上还需进行 VLAN 的配置。交换机的VLAN配置工作主要有VLAN的建立与删…...

python单例模式

设计模式&#xff1a;单例模式&#xff08;Singleton Pattern&#xff09;。单例模式确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取这个实例。 class Singleton:_instance Nonedef __new__(cls):if cls._instance is None:cls._instance super().__new__(cl…...

环境保护:人类生存的最后机会

随着科技的进步和人类文明的不断发展&#xff0c;地球上的自然资源也在以惊人的速度消耗殆尽。人类对于环境的无止境的掠夺&#xff0c;使得我们的地球正面临着前所未有的环境危机。环境污染、全球变暖、大规模灭绝等问题不断困扰着我们&#xff0c;似乎指向了人类生存的最后机…...

头歌-Python 基础

第1关&#xff1a;建模与仿真 1、 建模过程&#xff0c;通常也称为数学优化建模(Mathematical Optimization Modeling)&#xff0c;不同之处在于它可以确定特定场景的特定的、最优化或最佳的结果。这被称为诊断一个结果&#xff0c;因此命名为▁▁▁。 填空1答案&#xff1a;决…...

C++数据结构:B树

目录 一. 常见的搜索结构 二. B树的概念 三. B树节点的插入和遍历 3.1 插入B树节点 3.2 B树遍历 四. B树和B*树 4.1 B树 4.2 B*树 五. B树索引原理 5.1 索引概述 5.2 MyISAM 5.3 InnoDB 六. 总结 一. 常见的搜索结构 表示1为在实际软件开发项目中&#xff0c;常用…...

【07】ES6:对象的扩展

一、对象字面量语法扩展 1、属性简写 当属性名称和属性值的变量名称相同时&#xff0c;可以省略冒号的变量名称。 const foo barconst baz { foo } // 等同于 const baz { foo: foo }baz // { foo: bar }function f(x, y) {return { x, y } } // 等同于 function f(x, y)…...

flink找不到隐式项

增加 import org.apache.flink.streaming.api.scala._ 即可...

【网络编程】-- 04 UDP

网络编程 6 UDP 6.1 初识Tomcat 服务端 自定义 STomcat S 客户端 自定义 C浏览器 B 6.2 UDP 6.2.1 udp实现发送消息 接收端&#xff1a; package com.duo.lesson03;import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketExceptio…...

【脚本】图片-音视频-压缩文件处理

音视频处理 一&#xff0c;图片操作1&#xff0c;转换图片格式2&#xff0c;多张图片合成视频 二&#xff0c;音频操作1&#xff0c;转换音频格式2&#xff0c;分割音频为多段3&#xff0c;合成多段音频 三&#xff0c;视频操作1&#xff0c;转换视频格式2&#xff0c;提取视频…...

跨品牌的手机要怎样相互投屏?iPhone和iPad怎么相互投屏?

选择买不同品牌的手机是基于品牌声誉、产品特点、价格和性价比等多个因素的综合考虑。每个人的需求和偏好不同&#xff0c;选择适合自己的手机品牌是一个个人化的决策。 一些品牌可能更加注重摄影功能&#xff0c;而其他品牌可能更加注重性能和速度。选择不同品牌的手机可以根据…...

图像特征提取-角点

角点特征 大多数人都玩过拼图游戏。首先拿到完整图像的碎片&#xff0c;然后把这些碎片以正确的方式排列起来从而重建这幅图像。如果把拼图游戏的原理写成计算机程序&#xff0c;那计算机就也会玩拼图游戏了。 在拼图时&#xff0c;我们要寻找一些唯一的特征&#xff0c;这些…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...

LangFlow技术架构分析

&#x1f527; LangFlow 的可视化技术栈 前端节点编辑器 底层框架&#xff1a;基于 &#xff08;一个现代化的 React 节点绘图库&#xff09; 功能&#xff1a; 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...

土建施工员考试:建筑施工技术重点知识有哪些?

《管理实务》是土建施工员考试中侧重实操应用与管理能力的科目&#xff0c;核心考查施工组织、质量安全、进度成本等现场管理要点。以下是结合考试大纲与高频考点整理的重点内容&#xff0c;附学习方向和应试技巧&#xff1a; 一、施工组织与进度管理 核心目标&#xff1a; 规…...

aardio 自动识别验证码输入

技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”&#xff0c;于是尝试整合图像识别与网页自动化技术&#xff0c;完成了这套模拟登录流程。核心思路是&#xff1a;截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...