首页 > 其他分享 >1_两数之和

1_两数之和

时间:2024-08-09 10:54:13浏览次数:5  
标签:return target nums int res ++ 两数

1_两数之和

【问题描述】

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

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

解:

【算法设计思想】

此题为简单难度的题目,主要考察对于数组(顺序表)这种数据结构的操作。最为简单的办法就是我们利用“双指针”的思想,进行遍历即可,关键是内存的分配和释放问题以及C语言中数组的指针的关系!

【算法描述】

C语言:

int* twoSum(int* nums, int numsSize, int target, int* returnSize) {
    for(int i = 0; i<numsSize-1; ++i){
        for(int j = i+1; j<numsSize; ++j){
            if(nums[i]+nums[j] == target)
            {
                int *res=(int*)malloc(sizeof(int)*2);
                res[0] = i;
                res[1] = j;
                *returnSize = 2;
                return res;
            }
        }
    }
    *returnSize = 0;
    return NULL;
}


Python:

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        for i in range(len(nums)):
            for j in range(i + 1 , len(nums)):
                if(nums[i]+nums[j] == target):
                      return [i,j]
        
        return None

C++:

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<int> res = vector<int>(2);
        for (int i = 0; i < nums.size(); i++) {
            for (int j = i + 1; j < nums.size(); j++) {
                if (nums[i] + nums[j] == target) {
                    res[0] = i;
                    res[1] = j;
                    return res;
                }
            }
        }
        return res;
    }
};

Java:

class Solution {
    public int[] twoSum(int[] nums, int target) {

        int[] res = new int[2];

        for (int i = 0; i < nums.length; i++) {
            for (int j = i + 1; j < nums.length; j++) {
                if (nums[i] + nums[j] == target) {
                    res[0] = i;
                    res[1] = j;
                    return res;
                }
            }
        }

        return res;
    }
}

标签:return,target,nums,int,res,++,两数
From: https://www.cnblogs.com/zeta186012/p/18350394

相关文章

  • 代码随想录算法训练营day06|242.有效的字母异位词,349.两个数组的交集,202.快乐数,1.两数
    242.有效的字母异位词题目链接:https://leetcode.cn/problems/valid-anagram/description/我的代码:classSolution{public:boolisAnagram(strings,stringt){if(s.size()==t.size()){intrecord[26]={0};for(inti=0;i......
  • LeetCode-两数相加
    前言这道题将整数加法转换为在单链表上做加法运算,涉及到知识点:单链表的遍历单链表插入新节点题目描述给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。示例1:输入:l1=[2,4,3],l2=[5,6,4]输出:[7,0,8......
  • LeetCode刷题-两数之和
    一、两数之和给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例1:输入:nums=......
  • LeetCode-两数之和
    前言这道题是Leetcode的第一题,也是经典题目之一,几乎所有刷题网站的第一题都是“两数之和”,只是Leetcode这道题不一样。在这篇博客中,我们介绍了两种解法:暴力算法哈希表算法\(\mathcal{O}(n^2)\)\(\mathcal{O}(n)\)题目描述给定一个整数数组nums和一个整数目标......
  • leetcode力扣第29题:两数相除
    这题看似简单,实则一点也不难(不是),实则还是比较困难。最简单的做法是直接用减法,不停循环计数,最后统计减多少次能成。如果被除数是2^31-1或差不多大小的数,而除数是1差不多大小的数,那循环减法要执行的次数太多,一定会超时。所以一定要有更好的思路(1)通过二分法查找可能的商(2)对于......
  • 两数之和(LeetCode题)
    题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例1:输入:nums=......
  • 力扣题解2-两数相加
    问题的描述如下:分析过程:为了解决这个问题,我们需要逐位相加两个链表对应位置的值,并处理进位问题。具体步骤如下:初始化一个新的链表,用于存储结果。使用两个指针遍历两个输入链表,逐位相加,同时考虑进位。如果一个链表比另一个短,则将其视为0进行计算。处理最后可能存在的进位......
  • LeetCode 2.两数相加 java
    力扣链接2.两数相加-力扣(LeetCode)题目描述给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字0之外,这两个数都不会以0......
  • 力扣题解1-两数之和
    LeetCode第一题"两数之和"(TwoSum)问题分析过程:这个问题可以通过多种方法解决,包括暴力解法和使用哈希表的解法。以下是详细的分析过程:暴力解法:遍历数组中的每一对元素,检查它们的和是否等于目标值。时间复杂度是O(n^2),其中n是数组的长度。使用哈希表:使用一......
  • 两数之和-枚举
    题目描述:个人题解:    可以先枚举出数组中的每一个数x,寻找数组中是否存在(target-x),当我们使用遍历整个数组的方式寻找(target-x)时,需要注意到每一个位于x之前的元素都已经和x匹配过,因此不需要再进行匹配。而每一个元素不能被使用两次,所以我们只需要在x......