当前位置: 首页 > 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;这些…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...

论文阅读:Matting by Generation

今天介绍一篇关于 matting 抠图的文章&#xff0c;抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法&#xff0c;已经有很多的工作和这个任务相关。这两年 diffusion 模型很火&#xff0c;大家又开始用 diffusion 模型做各种 CV 任务了&am…...