LeetCode -Two Sum

leetcode解题笔记:Two sum系列解题思路 Two Sum 3Sum 3Sum Closest Two SumGiven an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, 阅读详情

算法是每个程序员的必修课,以前也认为做个普通的开发,要懂什么算法和数据结构,现在发现好点的公司算法和数据结构都是必须要问的,而且多学算法对自己的思维扩展是有很大的提高,再说现在求职这么难,不是4 5年前那个美好的时候了,所以要每天学点算法积累下,当然不太可能做到算法工程师那种了

今天的题目是求数组中要求二个数组相加等于某个数,然后求出这二个值的下标,这题还是算简单的

题目描述

给定一个整数数组和一个目标整数,该目标整数满足数组中两元素之和,返回数组中两个数字的下标索引,

例如给定数组int[] nums = [2, 7, 11, 15],目标整数int target = 9,因为 nums[0] + nums[1] = 2 + 7 = 9,返回包含两数索引分别是0和1

思路

先对数组进行for循环,拿出一个数,再进行一个里层循环,拿出每个数组中的数据进行操作

第一种方案

package com.zgz.search;

public class TwoSumDemo {
    public static void main(String[] args) {
        int[] nums = new int[]{2, 7, 11, 15};
        sum(nums,18);
    }
    private static void sum(int[] arr, int target){
        if(arr==null||arr.length==0){
            return;
        }
        for(int i=0;i<arr.length;i++){
            int firstValue = arr[i];
            int value = target-firstValue;
            for(int j=1;j<arr.length;j++){
                if(arr[j]==value){
                    System.out.println("i="+i);
                    System.out.println("j="+j);
                    return;
                }
            }
        }
    }
}

这种算法的时间复杂度为O(n^2),那么有没有更优秀的解算呢?答案是有的

第二种方案

分析这个数组[2, 7, 11, 15],我们可以利用Map集合,key是数组中的数值,value是数组对应的下标值,这样就不用双层for 循环了,它的时间复杂度就是O(n)

    public static int[] sum2(int[] nums, int target) {
        int[] result = new int[2];
        if (nums.length < 2) {
            return null;
        }
        Map<Integer, Integer> map = new HashMap<>();
        for (int i=0; i<nums.length; i++) {
            int num = target - nums[i];
            if (map.containsKey(num)) {
                result[0] = map.get(num);
                result[1] = i;
            }
            map.put(nums[i], i);
        }
        System.out.println("map="+map);
        return result;
    }

分析:求和等于18

当i=0,num=16 if条件判断不成立,然后把存在map集合中,这个时候map集合的值是:[2-0]

当i=1,num=11,if条件判断不成立,然后存储到map集合中,这个时候map集合的就变为:map[2-0,7-1]

当i=2,num=7  if条件判断成立,resule数组的第一个元素值=map.get(num)=1 result数组的第二个元素值就是当前数组的下标了,就是2,

这个方案就是使用了一次for循环,效率要比第一个效率高点.

LeetCode算法详解(一)--Two Sum 这个题目的目的就是给定数组以及目标和,找出数组中和为给定目标的两个数并且输出,要求是每个数只能使用一次,且输出的为两个数在数组中的位置。比较容易想到的方法是遍历数组中的所有数字,此种方法时间复杂度比较高O(n^2),代码如下:class solution{ public: int[] twosum(int[] nums,int target){ int len = nums.length;... 阅读详情

相关推荐

南邮-软件设计实验(C++版)

南邮软件设计 A档 一、分数统计 课题内容:   设计一个分数统计程序。包括学生信息的输入输出以及排序。通过该课题全面熟悉数组、字符串、文件的使用,掌握程序设计的基本方法及友好界面的设计。 课题要求: (1)输入某班级学生的姓名、分数; (2)对(1)的分数进行降幂排列并输出; (3)具有输入输出界面。 示例代码: #include<bits/stdc++.h> using...

Dainelcw 1万+

ACM之LeetCode中Two Sum

题目信息: Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would have exactly one solution. Example: G

Microstrong 864

macOS 12.7.6部署Ollama+Dify避坑指南

本文介绍了在macOS 12.7.6系统下部署Ollama和Dify的详细步骤及避坑指南。主要内容包括:1)关闭系统完整性保护(SIP)以允许修改系统目录;2)安装特定版本的Docker(2.1.0.5)和docker-compose(v2.38.2)以避免兼容性问题;3)配置Ollama服务并下载nomic-embed-text和deepseek-r1:7b模型;4)针对macOS调整Dify的docker配置文件,包括延长超时时间、修改存储路径、增加资源限制等关键设置。文中提供了完整的命令操作步骤和配置

Hi20240217的博客 3100

LeetCode刷题笔录 Two Sum

Two Sum Given an array of integers, find two numbers such that they add up to a specific target number. The function twoSum should return indices of the two numbers such that they add up to the

likecool21的专栏 1万+

盘点军工行业软件研发的那些常用GJB标准

GJB5000、2786、438、141、102、8114等...

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 9436

Caffeine:为每个元素动态设置过期时间

Caffeine利用expireAfter方法实现为每个元素动态设置过期时间

大数据开发、JAVA开发、人工智能AI 1万+

LeetCode 1 Two Sum题解

题目地址:https://leetcode.com/problems/two-sum/ 1. Two Sum 难度:简单 Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that e

赞美月亮的专栏 665

详解Nacos集群搭建

在我们日常的开发当中,用的都是单点Nacos,这种模式,我们自己开发测试玩一玩还可以,但是到了企业的生产环境之下,你还这么玩的话,那肯定是要出大问题了。因为在企业当中,我们更加强调的是高可用,所以在企业的生产环境下,Nacos一定要做成个集群。

博客 1万+

LeetCode 1. Two Sum 题解

本题是算法的经典入门问题,主要考察对哈希表的理解和应用。通过使用哈希表,我们可以将时间复杂度从 O(n²) 降低到 O(n),大大提高了算法的效率。哈希表的核心思想是:通过哈希表来存储已经遍历过的元素及其下标,这样当我们遍历到当前元素时,可以在 O(1) 的时间复杂度内检查目标值与当前元素的差值是否已经存在于哈希表中。这种方法不仅适用于两数之和问题,还可以应用于许多其他需要快速查找元素的场景。掌握哈希表的使用,对于解决这类问题非常重要。

cannonjinx的博客 4192

RK3588 部署 YOLO26 目标检测:PT → ONNX → RKNN 全流程

YOLO26n 在 RK3588 上 INT8 量化后 NPU 推理约 15ms,系统 FPS 约 55,可以覆盖边缘端实时检测需求。模型从 PT 到 RKNN 的转换要用opset=11避免算子兼容问题。先用 YOLO26n + 640 输入跑通全链路,确认推理结果正确后再做性能调优。

m0_64661770的博客 303

2026华为OD机试(C语言)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ

华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,C语言实现。

MISAYAONE的博客 11万+

LeetCode--Python解析【Two Sum】

题目:方法1:暴力算法,直接循环套循环。class Solution: def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ result = list(...

ZJRN1027的博客 4896

深度强化学习 | 基于SAC算法的移动机器人路径跟踪(附Pytorch实现)

软性演员-评论家(Soft Actor-Critic, SAC)算法是基于最大熵原理的离线策略方法,本节将基于深度强化学习中的SAC算法实现移动机器人的路径跟踪,介绍网络设计、动作空间设计和奖励函数设计,并提供Pytorch实现加深理解

FRIGIDWINTER的博客 5732

[LeetCode] No.1 Two Sum

“做程序员太辛苦了,我想换行……我该怎么办?” “敲一下回车。” Two Sum(两数之和) 题目: Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would...

但行好事 莫问前程 348

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Leetcode力扣 1 | 两数之和 Two Sum —— python

Leetcode力扣 1 | 两数之和 Two SumQuestionAnswerBrute Force 暴力求解法HashTable 哈希表法 该系列以提高编程能力、学习数据结构与算法为目的 编程语言:python Question 给定一个数组nums、一个目标target值(以下简写成nums、target) 我们的目的是在nums中,找到两个元素,使其相加等于target值,然后返回这两个元素在nums中的索引,就是数组下标。 题目中给了三个示例: 第一个返回下标0和1,因为2与7的和为9

idl1ng的博客 1140

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【Leetcode】001 Two Sum

【Leetcode】001 Two Sum题目Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you m

LYZ 4829

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Leetcode 01 Two Sum

Leetcode 01 Two Sum ##Description 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] ##solution metho...

jqc_ustc的博客 257

leetcode: 哈希——two-sum,3sum,4sum

1). two-sum Given an array of integers, find two numbers such that they add up to a specific target number. The function twoSum should return indices of the two numbers such that they add ...

156

【Python刷力扣hot100】1. Two Sum

本文介绍了在整数数组中寻找两数之和等于目标值的两种解法。暴力搜索法通过双重循环遍历所有组合,时间复杂度O(n²),空间复杂度O(1)。哈希表法则利用字典存储已遍历元素,以空间换时间,时间复杂度降至O(n),空间复杂度O(n)。两种方法均能有效解决问题,但哈希表法在效率上更优。文章包含Python代码示例和复杂度分析。

tao355667 907

Leetcode ☞ 1. Two Sum ☆ 【Hashmap】

给一数组和一target数,有两个元素的和为target。求这两个元素的下标的和。

Dr_Unknown的博客 983

力扣Leetcode1 | 两数之和(Two Sum)

暴力法、一次哈希表和两次哈希表法 https://blog.youkuaiyun.com/zhushaojiecumt/article/details/102846196 视频: https://www.bilibili.com/video/BV1Li4y1E7gT?p=1 双指针法 如果列表是无序的,需要先排序,使用双指针,分别指向头、尾。如果两数之和大于target,尾指针前移,如果两数之和小于target,首指针后移。 class Solution: def twoSum(self, nums: List

maoersong的专栏 358

Leetcode 1 Two Sum

Question : Two Sum Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would have exactly one solution, and you may...

嗨~ 172

LeetCode 1. Two Sum(c语言实现)

问题描述: 给定一个数组,找出两个元素,其相加等于一个给定的目标值,返回这两个元素的索引值。 Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would have...

caotuo_csdn的博客 1296

【LeetCode】 LC10001 两数之和(Two Sum),力扣第一题。

本文介绍了解决"两数之和"问题的两种方法及核心知识点。暴力枚举法通过双重循环遍历数组,时间复杂度O(n²),空间复杂度O(1);哈希表法利用空间换时间,存储已遍历元素及其索引,时间复杂度O(n),空间复杂度O(n)。核心知识点包括:数组(随机访问快但大小固定)、哈希表(快速查找)、时间/空间复杂度分析及空间换时间策略。哈希表法更高效,适合数据量大的场景,体现了用额外空间换取时间优化的设计思想。

thinkgame的博客 1315
上一篇: 斐波那契
下一篇: LeetCode -Reverse integer
zhoushenxian
博客等级 码龄12年 453粉丝 549原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值