热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于算法:LeetCode每日一题-Day-11-两数之和

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

大家好,我是编程熊,明天是LeetCode每日一题的第一天,明天的你比昨天更加优良啦!

题意

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

你能够假如每种输出只会对应一个答案。然而,数组中同一个元素在答案里不能反复呈现。

你能够按任意程序返回答案。

样例

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

题解

办法一

设两个要找的地位上的数字为 AB,则要找的就是满足 A+B=target ,因而简略的思路是,两层 for 循环遍历给的数组,第一层 for 找 A,第二层 forB,如果 AB 不是同一个地位的数且满足 A+B=target ,咱们就找到了答案要找的两个地位。

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

工夫复杂度:O(n^2)

空间复杂度:O(n)

办法二

基于办法一的前提,咱们思考一下咱们能不能更低的工夫复杂度呢?刚刚咱们固定了 A,还遍历了数组去找 B 确定是否存在 A+B=target, 那么咱们能不能放慢查找 B 的速度呢?

A+B=target 能够看做 B=target-A,因而能够固定 A,查看是否存在 B 满足 B=target-A。疾速检索一个数据的索引,能够哈希表。此题中能够把数组中的值作为哈希表中的 key ,下标索引当 value

C++中 map 是基于红黑树,插入和查问的工夫复杂度都为 $O(logn)$; unorder_map 底层基于哈希表,插入和查问工夫复杂度为$O(1)$。因而,抉择用 unorder_map 实现。

工夫复杂度: O(n)

空间复杂度: O(n)

C++代码

class Solution {
public:
    unordered_map numExist;
    vector twoSum(vector &nums, int target) {
      vector ans;
      for (int i = 0; i 

Java代码

class Solution {
    public int[] twoSum(int[] nums, int target) {
        HashMap numExist = new HashMap();
        for (int i = 0; i 

题目链接: https://leetcode-cn.com/problems/two-sum/

我是编程熊,致力于让大家都成为更好的人,欢送 『关注』、『点赞』、『转发』反对~


推荐阅读
  • java datarow_DataSet  DataTable DataRow 深入浅出
    本篇文章适合有一定的基础的人去查看,最好学习过一定net编程基础在来查看此文章。1.概念DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据 ... [详细]
  • 题面:P3178[HAOI2015]树上操作好像其他人都嫌这道题太容易了懒得讲,好吧那我讲。题解:第一个操作和第二个操作本质上是一样的&# ... [详细]
  • 本文介绍如何通过Java代码调用阿里云短信服务API来实现短信验证码的发送功能,包括必要的依赖添加和关键代码示例。 ... [详细]
  • HDU 2537 键盘输入处理
    题目描述了一个名叫Pirates的男孩想要开发一款键盘输入软件,遇到了大小写字母判断的问题。本文提供了该问题的解决方案及实现方法。 ... [详细]
  • 本文详细介绍了如何在PHP中使用Memcached进行数据缓存,包括服务器连接、数据操作、高级功能等。 ... [详细]
  • 本文探讨了在 PHP 的 Zend 框架下,使用 PHPUnit 进行单元测试时遇到的 Zend_Controller_Response_Exception 错误,并提供了解决方案。 ... [详细]
  • Exploring issues and solutions when defining multiple Faust agents programmatically. ... [详细]
  • 探讨如何在给定数组中寻找一个连续子数组,使其和至少达到指定值s,同时确保子数组长度最短。 ... [详细]
  • 本文介绍了如何使用Java编程语言实现凯撒密码的加密与解密功能。凯撒密码是一种替换式密码,通过将字母表中的每个字母向前或向后移动固定数量的位置来实现加密。 ... [详细]
  • 本文详细对比了HashMap和HashTable在多线程环境下的安全性、对null值的支持、性能表现以及方法同步等方面的特点,帮助开发者根据具体需求选择合适的数据结构。 ... [详细]
  • 本文详细介绍了Socket在Linux内核中的实现机制,包括基本的Socket结构、协议操作集以及不同协议下的具体实现。通过这些内容,读者可以更好地理解Socket的工作原理。 ... [详细]
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
  • 探讨多种方法来确定Java对象的实际类型,包括使用instanceof关键字、getClass()方法等。 ... [详细]
  • selenium通过JS语法操作页面元素
    做过web测试的小伙伴们都知道,web元素现在很多是JS写的,那么既然是JS写的,可以通过JS语言去操作页面,来帮助我们操作一些selenium不能覆盖的功能。问题来了我们能否通过 ... [详细]
  • 本文介绍了如何通过安装和配置php_uploadprogress扩展来实现文件上传时的进度条显示功能。通过一个简单的示例,详细解释了从安装扩展到编写具体代码的全过程。 ... [详细]
author-avatar
aGreadyCat__895
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有