当前位置: 首页 > news >正文

两数之和

题目:

给定一个整数数组 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
只会存在一个有效答案

思路:

方法适用条件时间复杂度空间复杂度说明
1. 双重循环(暴力)任意数组O(n²)O(1)枚举所有两两组合,无需额外空间
2. 哈希表(推荐)任意数组O(n)O(n)单次遍历 + 哈希查找 O(1),总时间 O(n)
3. 对撞指针(双指针)排序数组O(n)O(1)需先排序(O(n log n)),若原数组无序则总时间 O(n log n)
//双循环
class Solution {public int[] twoSum(int[] nums, int target) {int n = nums.length;for (int i = 0; i < n; i++) {for (int j = 1; j < n; j++) {if (nums[i] + nums[j] == target) {return new int[] { i, j };}}}return null;}
}//哈希表
class Solution {public int[] twoSum(int[] nums, int target) {int n = nums.length;Map<Integer, Integer> map = new HashMap<>();for (int i = 0; i < n; i++) {map.put(nums[i], i);}for (int i = 0; i < n; i++) {if (map.containsKey(target - nums[i]) && i != map.get(target - nums[i])){return new int[] { i, map.get(target - nums[i]) };}}return null;}
}//双指针(必须是有序数组)
class Solution {public int[] twoSum(int[] nums, int target) {int n = nums.length;int l = 0;int r = n - 1;while (l < r) {int sum = nums[l] + nums[r];if (sum == target) {return new int[]{l,r};} else if (sum < target) { //如果总和小于目标值,左指针右移,反之右指针左移l++;} else {r--;}}return null;}
}

http://www.dtcms.com/a/549876.html

相关文章:

  • 扩展阅读:什么是Pandas?
  • 怎样注册网站域名html5响应式模板
  • ☆本博客Simulink/FPGA/Matlab/RK3588等系统开发教程总目录
  • ThingsBoard如何设置仪表板初始默认实体
  • 记一次Gb28181视频流异常的排查
  • JavaScript 03 【基础语法学习】
  • Java项目2——拼图小游戏(上)
  • 深圳住房和建设局网站 申请大连工程信息招标网
  • uni-app VOD 与 COS 选型、开发笔记
  • Spring WebSocket实战:实时通信全解析
  • 网站建设及推广方案ppt模板互联网时代的营销
  • 身份证三要素实名核验API:基于OCR与可信身份认证的技术解析
  • OCR-图片内容识别
  • wordpress 网址导航页面济南seo网站关键词排名
  • VM虚拟机共享宿主机代理(Ubuntu24.04)
  • 高端网站建设收费为何比较贵网站名称写什么
  • C++容器string
  • [人工智能-大模型-110]:用通俗易懂的语言,阐述梯度下降的本质和数学原理:就是“摸着坡度下山”——哪边最陡,就往反方向走一步,反复走,直到走到谷底。
  • 龙华做棋牌网站建设哪家好哪个平台可以免费推广
  • 网站负责人可以备案怎么看网站域名
  • AIoT项目芯片选型指南:在性能、功耗与成本的十字路口
  • Vue 3 插槽(Slot)详解
  • 刘涛做的网站网络营销的优势包括
  • Spring Boot数据访问篇:整合MyBatis操作数据库
  • 丰都网站建设报价现代示范校建设专题网站
  • Flink Keyed State 详解之七
  • 中国建设银行贵州分行网站宁波建设银行管方网站
  • NVIDIA驱动更新“翻车”?解决RTX 2060在Bilibili客户端无法加载4K视频的终极指南*
  • 贵德县建设局网站校园兼职网站开发用例图
  • JavaSE知识分享——类和对象(下)