首页 > 其他分享 >LeetCode刷题(54)~两数之和【暴力循环/双哈希/单哈希】

LeetCode刷题(54)~两数之和【暴力循环/双哈希/单哈希】

时间:2023-01-12 14:44:05浏览次数:32  
标签:target nums int 54 twoSum vector 哈希 两数

题目描述

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

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

解答 By 海轰

提交代码(暴力循环)

vector<int> twoSum(vector<int>& nums, int target) {
        vector<int> a(2);
        for (int i=0;i<nums.size()-1;i++)
        for (int j=i+1;j<nums.size();j++)
        if (nums[i]+nums[j]==target)
        {
             a[0]=i;
             a[1]=j;
             break;
        }
        return a;
    }

运行结果
LeetCode刷题(54)~两数之和【暴力循环/双哈希/单哈希】_i++
提交代码(双哈希)

vector<int> twoSum(vector<int>& nums, int target) {
       unordered_map<int,int> m;
       m[nums[0]]=0;
       vector<int> a;
       for(int i=1;i<nums.size();++i)
       {
           if(target-nums[0]==nums[i])
           {
             a.push_back(0);
             a.push_back(i);
             return a;
           }
           m[nums[i]]=i;
       }
       for(int i=1;i<nums.size();++i)
       {
           if((m[target-nums[i]]!=i)&&m[target-nums[i]])
           {
               a.push_back(i);
               a.push_back(m[target-nums[i]]);
               break;
           }
       }
       return a;
    }

运行结果
LeetCode刷题(54)~两数之和【暴力循环/双哈希/单哈希】_其他_02
提交代码(一次哈希)

vector<int> twoSum(vector<int>& nums, int target) {
       unordered_map<int,int> m;
       for(int i=0;i<nums.size();++i)
       {
           int temp=target-nums[i];
           if(m.find(temp)!=m.end())
           return {m[temp],i};
           m[nums[i]]=i;
       }
       return {};
    }

运行结果
LeetCode刷题(54)~两数之和【暴力循环/双哈希/单哈希】_leetcode_03

题目来源

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum

标签:target,nums,int,54,twoSum,vector,哈希,两数
From: https://blog.51cto.com/u_15939722/6004140

相关文章

  • LeetCode刷题(79)~分糖果【哈希】
    题目描述给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的......
  • Luogu P5465 [PKUSC2018] 星际穿越
    观察可以发现一个结论,可以视作每个点\(i\)可以一步到达\(l_i\simn\)的每一个点。发现对于\(a<b<x\),\(dist(a,x)\gedist(b,x)\)第一步是相当特殊的,因为第一步......
  • 算法学习笔记(54)——绝对值不等式
    绝对值不等式题目链接:AcWing104.货仓选址\[\begin{align*}f(x)&=\lvertx_1-x\rvert+\lvertx_2-x\rvert+\cdots+\lvertx_n-x\rvert\\&=(\lve......
  • LeetCode两数相加(nullprt,构造函数,结构体链表中取数/链表)
    原题解nullprt构造函数构造函数的写法不同虽然我没理解但是结构体这样写ListNode*ans=nullptr;直接cout答案就是0,所以由构造函数可知ListNode(intx):val(x),......
  • 一致性哈希算法
    一个良好的分布式哈希方案,应该具有良好的单调性,即服务节点的增减不会造成大量哈希的重新定位。首先,一致性哈希算法会将整个哈希值空间理解成一个环,其取值范围是\(0\sim2^......
  • Springcloud学习笔记54--postman传递date格式数据
    1.postman传递date格式数据通过定义PostMan全局变量传递postman.setGlobalVariable("inputtime",Date.parse(newDate("2021/12/16")));   ......
  • leetcode_数据结构_入门_1. 两数之和
    1.两数之和问题给定一个整数数组nums 和一个整数目标值target,请在该数组中找出和为目标值target的那 两个整数,并返回它们的数组下标。分析可以假设每种输入......
  • 543. 二叉树的直径
    题目给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。注意:两结点之间的路径长度......
  • LeetCode两数之和(vector,unordered_map/哈希表)
    原题解vectorunordered_map题目给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可......
  • 哈希表
    1.哈希表的概念哈希表:也叫做散列表。根据关键字和值(Key-Value)直接进行访问的数据结构。它通过关键字key和一个映射函数Hash(key)计算出对应的值value,然后把键值......