美文网首页
1,两数之和/数组与字符串

1,两数之和/数组与字符串

作者: Buyun0 | 来源:发表于2018-09-10 12:53 被阅读0次

两数之和

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

示例:

给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

解法1:暴力循环

对每个数都从头开始寻找是否前面有和为target的数
时间复杂度:O(n2),对每个数都试图历遍一次数组寻找答案。
空间复杂度:O(1),并不需要保存啥·······
代码:

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<vector<int>> s;
        vector<int> a;
        for (int i = 1; i < nums.size(); i++) {

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

            }

        }
            return a;

        }
};

解法2:哈希表

每个数都尝试从之前已经插入到的哈希表里的数中寻找目标数,没有的话就将当前数与序号插入哈希表。跟上面的解法1相比可以说空间换时间。
时间复杂度:O(n),只对每个数循环一次,哈希表查找复杂度是常数。
空间复杂度:O(n),保存哈希表
代码:

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        
        vector<int> a;

        unordered_map<int, int> s;
        for (int i = 0; i < nums.size(); i++) {
            int tmp = target - nums[i];
            unordered_map<int, int>::iterator iter;
            iter = s.find(tmp);
            if (iter != s.end() && iter->second != i) {
                a.push_back(i);
                a.push_back(iter->second);
                return a;
            }
            s.insert(pair<int, int>(nums[i],i));
        }
    
        return a;

    }
};

相关文章

  • 1,两数之和/数组与字符串

    两数之和 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的...

  • leetcode top100

    1.求两数之和(数组无序) 2.求电话号码的字母组合 3.三数之和 4.两数之和(链表)

  • 两数之和(golang)

    原题:两数之和 关联:两数之和 II - 输入有序数组(golang)两数之和 IV - 输入 BST(golang)

  • 数组1 两数之和

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

  • C语言第六次作业:动态申请内存

    动态申请内存 1. 两数之和 数组二重循环\哈希表 167. 两数之和 II - 输入有序数组数组二重循环\首尾指...

  • 两数之和 II - 输入有序数组(golang)

    原题:两数之和 II - 输入有序数组 关联:两数之和(golang)两数之和 IV - 输入 BST(golan...

  • LeetCode 第18题:四数之和

    1、前言 2、思路 采用三数之和的思路,原本三数之和可以分解为:数组中的一个数 + 此数右边的数求两数之和,那么四...

  • hashmap应用

    两数之和问题 题目描述:在给定的数组nums中找到两个数之和等于目标值target。 1. 暴力方法 检索数组中所...

  • 数组 / 两数之和

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

  • 数组——两数之和

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

网友评论

      本文标题:1,两数之和/数组与字符串

      本文链接:https://www.haomeiwen.com/subject/brqsgftx.html