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

2023-10-30

1. 两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

输入:nums = [3,2,4], target = 6
输出:[1,2]

示例 3:

输入:nums = [3,3], target = 6
输出:[0,1]

提示:

  • 2 <= nums.length <= 104
  • -109 <= nums[i] <= 109
  • -109 <= target <= 109
  • 只会存在一个有效答案
    进阶: 你可以想出一个时间复杂度小于 O(n2) 的算法吗?
分析一下,我们学for循环时一定会涉及九九乘法表的练习,而且包含去重,
所以利用双重for循环,我们可以得到全部的下标相加组合,例如[2,7,5,2],target=7
2+7[下标0,1]
2+5[下标0,2]
2+2[下标0,3]
7+5[下标1,2]
7+2[下标1,3]
5+2[下标2,3]
判断 和 是否与 target 相等,如果相等则将此时的下标添加进TreeSet集合,
很明显下标[0,2]组合和[2,3]组合符合条件,TreeSet集合可以自动去重及排序,所以最后输出[0,2,3]。
以下一二两种解答区别只是一个是while循环一个是for循环。

第一种:

import java.util.SortedSet;
import java.util.TreeSet;

public class Main{
    static SortedSet<Integer> Index(int[] nums,int target){
        int num=0;
        int i=0;
        int j=1;
        SortedSet<Integer> indexSet=new TreeSet<Integer>();
        while (i<nums.length-2){
            if(j==nums.length){
                i++;
                j=i+1;
            }
            num=nums[i]+nums[j];
            System.out.println(i+""+j);
            if (num==target){
                indexSet.add(i);
                indexSet.add(j);
            }
            j++;
        }
        return indexSet;
    }
    public static void main(String[] args) {
        int[] nums = {2,7,7,7};
        int target = 9;
        System.out.println(Index(nums,target));
    }
}

第二种:

import java.util.SortedSet;
import java.util.TreeSet;

public class Main {
    static public SortedSet<Integer> twoSum(int[] nums, int target) {
        int n = nums.length;
        SortedSet<Integer> result=new TreeSet<Integer>();
        for (int i = 0; i < n; ++i) {
            for (int j = i + 1; j < n; ++j) {
                if (nums[i] + nums[j] == target) {
                    result.add(i);
                    result.add(j);
                }
            }
        }
        return result;
    }
    public static void main(String[] args) {
        int[] nums = {2,7,7,8,9,7};
        int target = 9;
        System.out.println(twoSum(nums,target));
    }
}

第二种的运行结果:
在这里插入图片描述

END
算法是真的很烧脑,我都没想过会为了一道算法题搞到半夜,主要也是很久不写Java代码,基础都忘了,我真的连TreeSet我都忘了名字了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【LeetCode】1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 的相关文章

随机推荐

  • python数据解析——xpath爬取文字和图片

    xpath解析 最常用且最便捷高效的一种解析方式 通用性 xpath解析原理 1 实例化一个etree的对象 且需要将被解析的页面源码数据加载到该对象中 2 调用etree对象中的xpath方法结合着xpath表达式实现标签的定位和内容的捕
  • 基于redis实现延时队列(二)

    背景 上篇文章中使用了redis的zset 定时器实现延时任务 虽然定时器设置为30秒执行一次 但是还是有时间上的差异化 现更换一种方式实现 可以避免时间上的差异 redis的key过期回调事件 也能达到延迟队列效果 配置修改 redis的
  • QT—3D绘图

    OpenGL是一个跨平台的 用来渲染3D图形的标准API Qt对OpenGL提供了强大的支持 Qt4时代的QtOpenGL模块在Qt5中已经不再建议使用 OpenGL相关的类被移到了Qt GUI模块 Qt Widgets模块中的QOpenG
  • csharp(CS0051)

    net6 定义了一个类 里面有一个枚举 报csharp CS0051 enum Sex Male Female public class Student string name int age Sex sex public Student
  • torch.quantile or np.quantile的计算

    torch的文档详细说明了quantile的计算方法 主要是将q的范围 0 1 转成输入index的范围 0 n 也就是说 将q 乘 n 然后插值计算 quantile位置不是整数 a torch tensor 0 0 1 1 2 1 3
  • 【已解决】5.24 代码问题——TensorFlow==1.14.0版本安装

    安装TensorFlow1 14 0总是显示 ERROR Could not find a version that satisfies the requirement tensorflow1 14 from versions 2 5 0
  • 百度商业大规模微服务分布式监控系统-凤睛

    导读 作为凤睛早期的接入方 后期的核心成员 笔者经历了整个项目前后四年的变迁 看过项目的艰难开端 中期的默默积累以及后期的蓬勃发展 每一次架构的变迁都带着技术浪潮的烙印 也看到项目成员利用有限资源来解决实际问题而持续不断的创新 凤睛是百度商
  • 关于Mac下appid登录提示‘This action could not be completed.’

    情景 打开xcode 运行工程时 xcode提示输入公司开发者账号密码 惊讶 之前没出现过的 按照要求输入密码 但又提示账号过期或密码可能被修改等 于是立马用账号去登陆开发者中心 确保正常登陆后 才放下心来 百度了下 把xcode偏好设置里
  • MySQL-SQL存储过程/触发器详解(下)

    作者 小刘在C站 个人主页 小刘主页 努力不一定有回报 但一定会有收获加油 一起努力 共赴美好人生 学习两年总结出的运维经验 以及思科模拟器全套网络实验教程 专栏 云计算技术 小刘私信可以随便问 只要会绝不吝啬 感谢CSDN让你我相遇 前言
  • 人工智能课程实践-A* 算法编程实践(python实现)

    本次实验的代码由python编写完成 代码在附录中 需要请自取 1 实验目的 1 熟悉启发式搜索算法 A搜索算法的理论 实现方法 2 掌握A 搜索算法的核心算法实现过程 3 理解A 搜索算法如何解决现实工程问题 学会分析现实问题蕴含的搜索求
  • web项目引入PDF.js并添加水印禁止下载

    目录 web项目引入PDF js并添加水印禁止下载 1 下载并引入PDF js实现预览 2 动态预览PDF文件 3 隐藏打开 下载 打印等功能 4 禁止键盘组合按键下载或另存为 5 禁用鼠标操作 6 添加全局水印 6 PDF文件预览效果 w
  • 信息学奥赛一本通(C++版) 第一部分 C++语言 第一章 C++语言入门

    总目录详见 https blog csdn net mrcrack article details 86501716 信息学奥赛一本通 C 版 第一部分 C 语言 第一章 C 语言入门 http ybt ssoier cn 8088 100
  • python Read timed out 解决方法

    python m pip install upgrade pip 报超时 解决方案 指定镜像 i https pypi doubanio com simple 如 python m pip install upgrade pip user
  • com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException

    com mysql jdbc exceptions jdbc4 MySQLNonTransientConnectionException Communications link failure during rollback Transac
  • 物联网开发笔记(50)- 使用Micropython开发ESP32开发板之控制HC-SR501人体红外感应传感器

    一 目的 这一节我们学习如何使用我们的ESP32开发板来控制HC SR501人体红外感应传感器 二 环境 ESP32 HC SR501人体红外感应传感器 Thonny IDE 几根杜邦线 接线方法 三 代码 from machine imp
  • 正态分布(高斯分布)、Q函数、误差函数、互补误差函数

    1 正态分布 高斯分布 若随机变量 XX 服从一个位置参数为 尺度参数为 的概率分布 且其概率密度函数为 f x 12 e x 22 2f x 12 e x 22 2 则这个随机变量就称为正态随机变量 正态随机变量服从的分布就称为正态分布
  • Yarn资源管理器

    Yarn简介 Apache Yarn Yet another Resource Negotiator 是Hadoop集群的资源管理器 负责为上层应用提供资源管理和调度 Yarn在Hadoop集群中充当资源管理和任务调度的框架 Yarn被引入
  • SpringBoot 之使用 Redis 实现接口幂等性

    文章目录 幂等概念 幂等解决方案 token 机制 各种锁机制 各种唯一约束 全局请求唯一 id 本文实现 实现思路 代码实现 幂等概念 在实际的开发项目中 一个对外暴露的接口往往会面临 瞬间大量的重复的请求提交 如果想过滤掉重复请求造成对
  • Matlab中的点运算

    例如 点乘 点乘幂 点左除 点右除 解释 点运算是对相同维数的矩阵的对应元素进行相应的运算 矩阵的点积 就是加点的情况 就是矩阵各个对应元素相乘 这个时候要求两个矩阵必须同样大小 矩阵的乘法 就是不加点的情况 就是矩阵a的第一行乘以矩阵b的
  • 【LeetCode】1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

    1 两数之和 给定一个整数数组 nums 和一个整数目标值 target 请你在该数组中找出 和为目标值 target 的那 两个 整数 并返回它们的数组下标 你可以假设每种输入只会对应一个答案 但是 数组中同一个元素在答案里不能重复出现