NO1_两数之和

2024-02-13 15:48
文章标签 两数 no1

本文主要是介绍NO1_两数之和,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

NO1_两数之和

  • 1、题目描述
  • 2、示例
  • 3、解题思路
  • 4、参考答案
  • 5、问题总结

1、题目描述

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

2、示例

示例 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]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

3、解题思路

因为已经很长时间没有写过代码了,加之对算法与数据结构方面的知识的遗忘,一上来的思路便是暴力求解。在题目没有内存和时间要求与限制的条件下暴力不失为一种方法,总比为追求完美耗费大量时间要好。

4、参考答案

/**f1暴力求解
**/
class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {int n = nums.size();for (int i = 0; i < n; ++i) {for (int j = i + 1; j < n; ++j) {if (nums[i] + nums[j] == target) {return {i, j};}}}return {};}
};
/**f2
**/
class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int, int> hashtable;for (int i = 0; i < nums.size(); ++i) {auto it = hashtable.find(target - nums[i]);if (it != hashtable.end()) {return {it->second, i};}hashtable[nums[i]] = i;}return {};}
};

5、问题总结

从题目和中可以看出来给出的是一个数组nums和一个目标值target,在数组nums中找出两个数之和与target相等,题目理解没有什么困难的,思路也很清晰。
暴力解题虽然容易,但是多想想其他的思路也是不错的选择。
因为是第一次做题,即便题目并不难,但是写代码还是费了不少尽。知识的逐渐淡忘是一个大问题,只有在不断的练习和总结中才能不断地发现问题,提升自己。总结是一个好东西,适当的总结会让人更快成长。

这篇关于NO1_两数之和的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/705948

相关文章

两数之和--力扣1

两数之和 题目思路C++代码 题目 思路 根据题目要求,元素不能重复且不需要排序,我们这里使用哈希表unordered_map。注意题目说了只对应一种答案。 所以我们在循环中,使用目标值减去当前循环的nums[i],得到差值,如果我们在map中能够找到这个差值,就说明存在两个整数的和为目标值。 如果没有找到,就将当前循环的nums[i]以及下标i放入map中,以便后续查

Leetcode面试经典150题-2.两数相加

解法都在代码里,不懂就留言或者私信 理论上提交这个就是最优解 字节考过不下20次,这个高居字节面试榜第9名 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) {

【LeetCode】01.两数之和

题目要求 做题链接:1.两数之和 解题思路 我们这道题是在nums数组中找到两个两个数使得他们的和为target,最简单的方法就是暴力枚举一遍即可,时间复杂度为O(N),空间复杂度为O(1)。 代码实现 class Solution {public:vector<int> twoSum(vector<int>& nums, int target) {//暴力枚举int n=nums

力扣第一题:两数之和

文章目录 需求分析代码结尾 需求 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[

【Hot100算法刷题集】哈希-01-两数之和(暴力枚举再优化,也不是哈希表的对手)

🏠关于专栏:专栏用于记录LeetCode中Hot100专题的所有题目 🎯每日努力一点点,技术变化看得见 题目转载 题目描述 🔒link->题目跳转链接 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那 两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。 你可以按任

欧几里德算法(求两数最大公因数)

两个整数的最大公因数(gcd)是同时整除两个大最大整数。即gcd(50,15)=5.      算法连续计算余数直到除数为0,最后的非0余数就是最大公因数。因此若M=1989,N=1590,则余数是399,393,6,3,0,从而gcd(1989,1590)=3,这是一个快速算法。 public static long gcd(long m,long n){ while(n !

LeetCode题集-1- 两数之和

这个题目是什么意思呢?简单来说就是在一个数组中找出两个元素,使其和为我们设定的值,并且每个元素只能用一次。 如下图具体示例: 到这里不知道你是否已经有解题思路了呢? 解法一:双层循环 我第一反应就是双层循环,直接暴力破解。因为题目要求每个元素只能使用一次,并且已经计算过的也没必要再次计算,因此内层循环索引起始可以以外层索引+1作为起始点,具体代码如下: public stati

力扣1.两数之和(哈希表)

class Solution {// 定义一个名为twoSum的方法,接收一个整数数组nums和一个整数target作为参数public int[] twoSum(int[] nums, int target) {// 创建一个HashMap,用于存储数组中的元素及其对应的索引Map<Integer, Integer> map = new HashMap<Integer, Integer>();/

力扣top300——2.两数相加

序号前300中非会员题 2. 两数相加 我们建立一个哨兵,方便返回使用,再建立一个指针cur,来一个个建立链表。 循环遍历链表,当两个链表没走到头或需要进位时继续下去。 当前结点的值为进位+两链表值%10,然后修改进位,将结果放入链表,将3个链表走到next /*** Definition for singly-linked list.* struct ListNode {* i

用python手刃Leetcode(1):两数之和【简单题】

前言 博客里新开一个“用python手刃Leetcode”的专题,顾名思义,主要目的是记录自己在Leetcode上刷题的过程,代码全程用python3编写,所用网址是:leetcode中国。这个网址的好处是:1)纯中文,解决了英语不好读题困难的问题;2)网页打开速度快。 ` 同时可以看到:目前官网给出的解题代码是用java编写的,并没有给出官方的python解答,本专栏除了尽量使用多种解法给出每