JAVA学习-练习试用Java实现“两数之和”

问题:


给定一个整数数组 nums 和一个整数目标值 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 <= 103
-109 <= nums[i] <= 109
-109 <= target <= 109
只会存在一个有效答案

解答思路:

思路一:暴力法

使用两层循环遍历数组,找到两个数的和等于目标值,返回它们的下标。

public int[] twoSum(int[] nums, int target) {

    int n = nums.length;

    for (int i = 0; i < n - 1; i++) {

        for (int j = i + 1; j < n; j++) {

            if (nums[i] + nums[j] == target) {

                return new int[]{i, j};

            }

        }

    }

    return new int[]{};

}

复杂度分析:

- 时间复杂度:O(n^2),其中 n 是数组的长度。最坏情况下,数组中任意两个数之和都不等于目标值,需要遍历整个数组。

- 空间复杂度:O(1)。

思路二:哈希表

使用哈希表存储数组中的元素和对应的下标。遍历数组,对于每个元素 nums[i],在哈希表中查找是否存在 target - nums[i] 的值。如果存在,则返回对应的下标。

public int[] twoSum(int[] nums, int target) {

    Map<Integer, Integer> map = new HashMap<>();

    int n = nums.length;

    for (int i = 0; i < n; i++) {

        int complement = target - nums[i];

        if (map.containsKey(complement)) {

            return new int[]{map.get(complement), i};

        }

        map.put(nums[i], i);

    }

    return new int[]{};

}

复杂度分析:

- 时间复杂度:O(n),其中 n 是数组的长度。遍历数组一遍,对于每个元素,在哈希表中查找的时间复杂度是 O(1)。

- 空间复杂度:O(n),其中 n 是数组的长度。最坏情况下,哈希表中存储了数组中的所有元素。

(文章为作者在学习java过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/632132.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C# 结合 JavaScript 对 Web 控件进行数据输入验证

目录 关于数据验证 范例运行环境 验证设计 JavaScript 方法 设计 实现 调用示例 C# 方法 设计 实现 调用示例 小结 关于数据验证 在 Web 应用的录入界面&#xff0c;数据验证是一项重要的实现功能&#xff0c;数据验证是指确认 Web 控件输入或选择的数据&#xff…

Microsoft Remote Desktop Beta v10.9.7 Mac微软远程连接工具

Microsoft Remote Desktop Beta 是一种软件应用程序&#xff0c;使用户能够从其设备远程访问基于 Windows 的计算机或虚拟机。它可以在 Windows 和 Mac 操作系统上下载。通过 Microsoft Remote Desktop&#xff0c;用户可以使用远程桌面协议 (RDP) 或 RemoteFX 协议连接到远程桌…

【qt】日历和定时器

日历和定时器 一.Calendar Widget(日历组件)1.日历的基本使用 二.定时器1.定时器的用处2.创建一个定时器3.设置定时器时间间隔4.设置定时器类型5.超时信号6.关联定时器7.启动定时器8.关闭定时器9.定时器要执行功能 三.总结一下&#xff1a; 一.Calendar Widget(日历组件) 1.日…

亚马逊调整退货处理费,卖家如何应对新挑战?

在电子商务领域&#xff0c;退货处理一直是一个重要且复杂的问题。作为全球最大的电子商务平台之一&#xff0c;亚马逊一直在寻求优化退货处理流程&#xff0c;以平衡消费者满意度和运营成本。近日&#xff0c;亚马逊宣布自2024年6月1日起&#xff0c;将对退货处理费收取标准进…

ATFNet:长时间序列预测的自适应时频集成网络

ATFNet是一个深度学习模型&#xff0c;它结合了时间域和频域模块来捕获时间序列数据中的依赖关系。引入了一种新的加权机制来调整周期性的权重&#xff0c;增强了离散傅立叶变换&#xff0c;并包括一个复杂关系识别的注意力机制&#xff0c;在长期时间序列预测中优于当前方法(每…

一休:一款专业的休息提醒软件

对于长期使用电子产品的人来说&#xff0c;保护眼睛至关重要&#xff0c;不论是工作还是学习&#xff0c;适当的休息都是必要的&#xff0c;保护视力要牢记20-20-20法则&#xff0c;眼科医生陶勇也科普过&#xff1a; 使用电脑工作和学习时&#xff0c;容易会忘记时间&#x…

Maven 依赖排查

先从项目去看显而易见&#xff0c;假如我们有一个项目&#xff0c;父工程中包含一些子工程&#xff0c;如下&#xff1a; 我们想看一下samples-account中的依赖关系&#xff0c;那么我们可以打开 samples-account的pom文件&#xff0c;查看其maven依赖关系图。 我们可以看到此项…

WPS如何把多个表格合并到一个表格里面?

注意&#xff1a;此功能需要wps会员。 例如&#xff1a;这里有3个表格。 现在希望合并3个表格到一起&#xff0c;如下图所示。 新建一个表格&#xff0c;打开表格。 选择 开始->工作表->合并表格->整合成为一个工作薄。 弹出对话框&#xff0c;选择添加文件&#xff…

JETBRAINS IDES 分享一个2099通用试用码,支持一键升级!DataGrip 2024 版

文章目录 废话不多说上教程&#xff1a;&#xff08;动画教程 图文教程&#xff09;一、动画教程激活 与 升级&#xff08;至最新版本&#xff09; 二、图文教程 &#xff08;推荐&#xff09;Stage 1.下载安装 toolbox-app&#xff08;全家桶管理工具&#xff09;Stage 2 : 下…

AndroidStudio集成高德地图后出现黑屏并报错

报错内容为&#xff1a;No implementation found for void com.autonavi.base.ae.gmap.GLMapEngine.nativeMainThreadTrigger(int, long) (tried Java_com_autonavi_base_ae_gmap_GLMapEngine_nativeMainThreadTrigger and Java_com_autonavi_base_ae_gmap_GLMapEngine_nativeM…

最佳解决Maven同一依赖多版本共存问题,重复依赖(同一个jar包,多个版本)-maven-shade-plugin

先看链接:原文链接 参照原文链接生成的文件(下面是我放的位置) mvn指令 mvn install:install-file -DfileD:\mavenrepository/maven-shade.jar -DgroupIdcom.wj -DartifactIdmaven-shade -Dversion1.1 -Dpackagingjar如果配置了maven_home 和java_home可以任意打开cmd执行(…

Linux-软件安装--tomcat的安装

tomcat的安装 1、下载tomcat安装包2.移动到自己想要解压的目录3、解压文件夹4、启动tomcat5、查看tomcat进程6、查看日志7、通过浏览器访问成功8、停止tomecat服务8.1运行tomcat的bin目录中提供的停止服务的脚本文件shutdcwn.sh8.2结束tomcat进程1、下载tomcat安装包 本篇文章…

Vue原理学习:vdom 和 diff算法(基于snabbdom)

vdom 和 diff 背景 基于组件化&#xff0c;数据驱动视图。只需关心数据&#xff0c;无需关系 DOM &#xff0c;好事儿。 但是&#xff0c;JS 运行非常快&#xff0c;DOM 操作却非常慢&#xff0c;如何让“数据驱动视图”能快速响应&#xff1f; 引入 vdom 用 vnode 表示真实…

邮件API接口的优势有哪些?如何有效整合?

邮件API怎么选&#xff1f;SendCloud与AokSend的性能对比分析&#xff1f; 邮件API接口作为企业与用户沟通的重要桥梁&#xff0c;其重要性不言而喻。Aok将深入探讨邮件API接口的优势、有效整合的方法、选择标准以及SendCloud与AokSend两款邮件发送服务的性能对比分析。 邮件…

这10款安卓APP,简直好用到爆!

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频http://AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频 1.追书——追书神器 追书神器是小说追新大神&#xff0c;全网实…

【大模型微调】一文掌握7种大模型微调的方法

本篇文章深入分析了大型模型微调的基本理念和多样化技术&#xff0c;细致介绍了LoRA、适配器调整(Adapter Tuning)、前缀调整(Prefix Tuning)等多个微调方法。详细讨论了每一种策略的基本原则、主要优点以及适宜应用场景&#xff0c;使得读者可以依据特定的应用要求和计算资源限…

Jquery+Servlet+JDBC实现登录注册功能

前端部分 HTMLCSS部分 引入JQuery包和JQuery.cookie包&#xff0c;前者封装了DOM操作的一些方法&#xff0c;后者封装了对cookie的操作 我们使用cookie主要是为了做登录后页面的跳转时&#xff0c;能存下来这个用户是谁&#xff0c;这样后面可以对单一用户进行操作&#xff…

使用API有效率地管理Dynadot域名,默认将域名隐形转发至其他界面

关于Dynadot Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮…

webpack优化构建速度示例-resolve.extensions:

当项目不仅仅包含.js或.json文件&#xff0c;还包含其他类型文件(如.ts、.vue、.css)作为模块时&#xff0c;配置resolve.extensions可以不必要的文件搜索提高性能。 src/index.ts import { someFuction } from ./modulesomeFuction()src/module.tsimport {otherSomeFuction} f…

三分钟快速上手SpringSecurity框架

导入依赖框架 web 框架(spring-boot-starter-web) <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> springSecurity 框架(spring-boot-starter-security) <de…