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过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaEE初阶-多线程进阶1

文章目录 前言一、常见的锁策略1.1 乐观锁与悲观锁1.2 重量级锁与轻量级锁1.3 自旋锁与挂起等待锁1.4 可重入锁与不可重入锁1.5 公平锁与非公平锁1.6 互斥锁与读写锁 二、synchronized的优化策略2.1 锁升级2.2 锁消除2.3 锁粗化 前言 多线程进阶的内容在面试中容易考&#xff…

好用的Tipard 蓝光转换器 (Tipard Blu-ray Converter) mac&win

Tipard Blu-ray Converter 是一款令人惊叹的蓝光解决方案软件&#xff0c;可将蓝光光盘/文件夹转换为 1:1 质量的数字格式&#xff0c;速度提高 30 倍&#xff0c;用于 4K UHD 和 1080p 高清视频。它可以将蓝光光盘和文件夹中的蓝光电影转换为MKV、MP4、WMV、MOV、AVI、FLV、VO…

汽车EDI:IAC Elmdon EDI 对接指南

近期收到客户C公司的需求&#xff0c;需要与其合作伙伴IAC Elmdon建立EDI连接&#xff0c;本文将主要为大家介绍IAC Elmdon EDI 对接指南&#xff0c;了解EDI项目的对接流程。 项目需求 传输协议&#xff1a;OFTP2 IAC Elmdon 与其供应商之间使用的传输协议为OFTP2。OFTP2是…

如何管理研发人员

在日益激烈的市场竞争中&#xff0c;企业的核心竞争力往往取决于其技术创新能力和研发实力。然而&#xff0c;随着企业研发的深入和技术的积累&#xff0c;研发人员泄密的风险也愈发严重。如何防止研发人员泄密&#xff0c;已经成为企业面临的重要问题。本文将从加强员工保密意…

财富加速器!AI智能无人直播,矩阵操作引领您卖货、卖团购券、拓客,助力财富梦想实现!

财富加速器&#xff01;AI智能无人直播&#xff0c;矩阵操作引领您卖货、卖团购券、拓客&#xff0c;助力财富梦想实现&#xff01; 在当今数字化时代&#xff0c;AI智能技术正以惊人的力量催生新的商机&#xff0c;为经济增长注入源源不断的动力。如果您渴望实现财富梦想&…

学习笔记:使用Ollama项目快速本地化部署Qwen 1.5模型

Ollama简介 Ollama是一个开源框架&#xff0c;专门设计用于在本地运行大型语言模型。它的主要特点是将模型权重、配置和数据捆绑到一个包中&#xff0c;从而优化了设置和配置细节&#xff0c;包括GPU使用情况&#xff0c;简化了在本地运行大型模型的过程。Ollama支持macOS和Li…

2024长三角C题全保姆教程

赛道 C&#xff1a;汽后配件需求预测问题 根据以上信息&#xff0c;请你们建立数学模型完成以下问题&#xff1a; 问题 1 使用“历史配件订单表 ”中的数据&#xff0c;预测出各商家在本仓库的配件 2023 年 8 月 1 日至 2023 年 8 月 31 日的需求量&#xff0c;请将预测结果以表…

利用宝塔面板搭建nodejs网站(不使用pm2)

利用宝塔面板搭建nodejs网站&#xff08;不使用pm2&#xff09; 1. 准备代码文件2. 将代码上传至云主机3. 云主机配置3.1 绑定域名3.2 利用面板配置node环境3.3 利用面板增加node项目 4. 打开端口 暂时只演示http的。https类似&#xff0c;需要添加证书。 1. 准备代码文件 清单…

Ubuntu 设置环境变量永久生效和临时生效

1. 在 /etc/profile 文件中添加变量 对所有用户生效&#xff08;永久的&#xff09; 注&#xff1a;修改文件后要想马上生效&#xff0c;要运行 source /etc/profile。否则在下次重进此用户时生效。 2. 在用户目录下的 .bash_profile 文件中增加变量 对单一用户生效&#xf…

最新运营商归属地数据库

四大运营商手机归属地数据(404169条)&#xff1a; 2024年5月整理&#xff0c;文件后缀&#xff1a;xlsx&#xff0c;可直接导入hive和mysql等数据库

Linux---在Xshell上配置软件包管理器yum

一、什么是yum 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软…

赶紧收藏!2024 年最常见 100道 Java 基础面试题(四十九)

上一篇地址&#xff1a;赶紧收藏&#xff01;2024 年最常见 100道 Java 基础面试题&#xff08;四十八&#xff09;-CSDN博客 九十七、spring事务实现方式有哪些&#xff1f; Spring框架提供了多种事务管理的实现方式&#xff0c;以支持不同的事务需求和场景。以下是Spring支…

宝塔助手是以宝塔Linux面板提供的API开发的一款可以随时随地管理服务器的APP

【软件介绍】手机操控云服务器的神器软件&#xff0c;本人亲测在用&#xff0c;好用极了&#xff01; 【软件名称】宝塔助手 【软件包名】com.lensyn.zsbt 【软件版本】1.4.1 【软件大小】29.00M 【适用系统】安卓 【软件特色】宝塔助手是以宝塔Linux面板提供的API开发的一款可…

设计模式分享

2. 策略模式 2.1 定义&#xff1a;策略模式定义了家族算法&#xff0c;分别封装起来&#xff08;这些算法完成的都是相同的工作&#xff0c;只是实现不同&#xff09;&#xff0c;它可以用相同的方式调用所有的算法&#xff0c;减少了各种算法类与使用算法类之间的耦合。此模式…

Python实战开发及案例分析(25)—— 爬山算法

爬山算法&#xff08;Hill Climbing&#xff09;是一种启发式搜索算法&#xff0c;常用于解决优化问题。它的核心思想是从一个初始解开始&#xff0c;不断朝着增益最大的方向移动&#xff0c;直到达到局部最优解。 实现步骤 从初始解开始。在当前解的邻域中找到一个更好的解。…

LeetCode109:组合总和Ⅳ

题目描述 给你一个由 不同 整数组成的数组 nums &#xff0c;和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 解题思想 使用完全背包 代码 /*dp[i]&#xff1a;表示装满容量为i的背包有dp[i]种方…

高通QCS6490开发(二)AI板卡接口

QCS6490是高通公司针对高端物联网终端而优化的SoC&#xff0c;在性能和功耗上有最优的平衡。《高通QCS6490 AIoT应用开发》是一系列AIoT应用开发文章&#xff0c;介绍如何基于QCS6490平台做AIIoT的应用开发。 本文主要介绍FV01开发板的内部和外部接口。 内部的板载接口如下 接口…

C++_第十一周做题总结_继承基础

id:68 A圆和圆柱体积算&#xff08;继承&#xff09; 题目描述 定义一个CPoint点类&#xff0c;包含数据成员x,y&#xff08;坐标点&#xff09;。 以CPoint为基类&#xff0c;派生出一个圆形类CCircle&#xff0c;增加数据成员r(半径&#xff09;和一个计算圆面积的成员函数…

天锐绿盾 | 设计院、机械制造行业透明加密cad图纸、图纸防泄密软件

天锐绿盾为设计院及机械制造行业量身打造的透明加密CAD图纸解决方案&#xff0c;专注于保障这些行业中的核心资产—设计图纸的安全。通过集成先进的加密技术和访问控制策略&#xff0c;该软件系统能有效防止图纸的未经授权访问和意外泄密。 PC地址&#xff1a; https://isite…

ControlNet 学习笔记

ControlNet根据一些额外的信息控制扩散生成走向 在作用原理上&#xff0c;ControlNet和LoRA是有许多相似之处的&#xff0c;定位都是对大扩散模型做微调的额外网络。 Annotator&#xff08;预处理器&#xff09;:从图片中提取对ControlNet有用的额外信息 Diffusion:在ControlN…