leetcode题库练习_两数之和

题目:两数之和

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

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

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

解题思路:

编程语言:C++

暴力破解法:即循环遍历两次数组nums

时间复杂度:O(n2)

代码实现如下

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        int i=0;
        int j=i+1;
        for( i=0;i<nums.size();i++){
            for( j=i+1;j<nums.size();j++){
                if(nums[i]+nums[j]==target)
                return {i,j};
            }
        }
        return {i,j};
    }
};
执行用时:616 ms
内存消耗:7.2 MB

就结果来看,暴力破解虽然能完成题目的要求,但无论从时间还是空间的角度来看,都不是最优的。改进的题解有一遍哈希,两遍哈希等,后续将研究实现。

小白初次投稿,还请大家多多指教!

题目出处

posted @ 2020-05-26 22:53  阿东himself  阅读(132)  评论(0)    收藏  举报