LeetCode 通关攻略(非最优解)1 Two Sum

问题描述



Given an array of integers, return indices of the two numbers such that they add up to a specific target.

说是给一个integer数组nums,并给一个integer的值target,让返回数组中两个元素相加等于target的索引对。

未通过的方法



我看此题的的等级是Easy,想都没想直接就来了个for嵌套,如下:

 1 class Solution {
 2 public:
 3     vector<int> twoSum(vector<int>& nums, int target) {
 4         std::vector<int> tempIndex;
 5         for(int i = 0; i != nums.size(); i++)
 6         {
 7             for(int j = 0; j != nums.size(); j++)
 8             {
 9                 if(((nums[i] + nums[j]) == target) && i != j)
10                 {
11                     tempIndex.push_back(i);
12                     tempIndex.push_back(j);
13
14                     return tempIndex;
15                 }
16             }
17         }
18
19         return tempIndex;
20     }
21 };

可想而知,overtime,系统容忍不了O(N2)的复杂度。那就只能是想办法来降复杂度了,因此笨人笨方法,我画了个例子来看看有啥规律没(真够笨啊。。。)

图1

上图1中标有0、1、2、3的框代表数组,其数值代表了索引,而图中的两个数组是一样的,这是为了描述for嵌套方便而已。有向边表示了外层for循环指向内层for循环。而最底下的<x, y>中表示对应的索引对,举例来说就是当外层循环的i = 0时,内层循环的j分别取0、1、2、3时构成的索引对<  >、<0, 1>、<0, 2>、<0, 3>,其中空的<   >表示索引值不能相同。全部写开后可以看出,因为是对同一个数组进行操作,所以<x, y>与<y, x>是一致的,可以完全只取绿色部分即可,因此表现到代码里边也是十分的简单。

通过的方法



只需在内层for循环时跳过重复的索引对,也就是将j = (i + 1)即可,这样整体复杂度是不是降了?

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        std::vector<int> tempIndex;
        for(int i = 0; i != nums.size(); i++)
        {
            for(int j = (i + 1); j != nums.size(); j++)
            {
                if(((nums[i] + nums[j]) == target) && i != j)
                {
                    tempIndex.push_back(i);
                    tempIndex.push_back(j);

                    return tempIndex;
                }
            }
        }

        return tempIndex;
    }
};
时间: 2024-12-23 12:28:47

LeetCode 通关攻略(非最优解)1 Two Sum的相关文章

《刀塔传奇》第六章通关攻略

<刀塔传奇>第六章提尔湖通关攻略 对于很多玩家来说,把<刀塔传奇>每个副本拿下三星是一件强迫症的事情,绿云应用的小编也是如此,看着地图上满满的三星通关感觉很舒服~接下来小编给大家带来的是这一期第六章荆棘山谷提尔湖的通关攻略 美丽的湖泊干净的如同一面镜子周围树荫环绕,然而这样的美景结果被一群兽人包围了,拿起我们的武器和绿云应用中心的小编一起去打败他们吧. 在提尔湖这关,敌法的阵容搭配的很好,所以我们面对的阵容压力还是很大的,敌方的阵容带着两个治疗,治疗量很高,意味着打消耗战的话损失会

imToken 测评通关攻略

imToken 测评通关攻略 2017-10-19 imToken 在 1.3.3 版本新增了用户风险测评系统, 目的是为了让更多的用户了解钱包安全知识以及区块链的基本概念, 从某种程度上提升了整个区块链生态的认知水平.但是这也对很多小白用户带来了困扰, 反复测试都不过 (惨不忍睹程度堪比科目二), imToken 是希望用户可以通过帮助中心自主学习相关知识, 不过今天小刘特意为你带来了快速通过测评的攻略, 帮你迅速掌握去中心化钱包的安全知识. 所有问题大体可以分为三类, 分别为区块链基本概念.

Nginx通关攻略

Nginx是什么 没有听过Nginx?不要紧,一定听过它的"同行"Apache吧!Nginx同Apache一样都是一种WEB服务器.基于REST架构风格,以统一资源描述符(Uniform Resources Identifier)URI或者统一资源定位符(Uniform Resources Locator)URL作为沟通依据,通过HTTP协议提供各种网络服务. 然而,这些服务器在设计之初受到当时环境的局限,例如当时的用户规模,网络带宽,产品特点等局限并且各自的定位和发展都不尽相同.这也

深度游戏测评【天命奇御】成就进度62/71的通关攻略(2&#183;罐子篇)

原文地址:https://www.cnblogs.com/wuduojia/p/9494824.html

2019阿里云双11拼团全攻略

2019阿里云双11拼团活动于10月24日正式上线啦!这次的拼团活动上线的时间为2019年10月24日-2019年11月11日.我们可以从这次的活动情报来看,可以知道本次的拼团活动是历年双11以来福利最大的了. ? 双11主会场:https://www.aliyun.com/1111/2019/home 拼团1折场:https://www.aliyun.com/1111/2019/group-buying-share ? 今年拼团活动的特色可大致分为三个:? 1.拉新开红包,最高金额可开到111

弹丸论破2 中文攻略

最近在推这个游戏,于是转一篇自己看着比较顺眼的攻略= = -------------------------------------------------------------------------- 转载请注明作者和出处 [email protected]洛天之痕 写在前面: 虽然弹丸2感觉还是自己打通的比较有成就感啦,但苦逼的撸主在打完一周目后发现还有那么多CG和隐藏熊币没拿确实很蛋疼(残缺的男人无幸福啊,我的福利),所以为了广大同胞们第一次玩的幸福点(撸主第一个反论钻研了半个多小时.

新仙剑奇侠传完美攻略

小学的时候很为这个游戏着迷,重复玩了98版的不下十次,但是98版的没有好结局.今天看了下新版的剧情攻略,其实也和98版的差不多,但结局有几种选择了,决定再玩一次. 梦境-罗刹洞 飞龙失伴云中探,遗恨天际陨灵珠.李逍遥乘着飞剑,追踪几个小鬼来到罗刹洞.洞中的小妖不难对付,路也不难走,不多久就能见到BOSS罗刹鬼婆.此战必败,随便打打就是了,不用浪费了刚得的高等级药物,药物醒来后不会消失.动手吧~!十八年后,俺又是一条好汉~!醒来后剧情,发现婶婶在床边敲打着,原来刚才发生的一切只是南柯一梦. 支线剧

Wargame narnia level 3 (中文攻略)

ssh [email protected] 密码:OOXX(上一关拿到的密码) cat narnia3.c #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <stdlib.h> #include <string.h> int main(int arg

【新仙剑奇侠传】完美攻略~全剧情

梦境-罗刹洞 飞龙失伴云中探,遗恨天际陨灵珠.李逍遥乘着飞剑,追踪几个小鬼来到罗刹洞.洞中的小妖不难对付,路也不难走,不多久就能见到BOSS罗刹鬼婆.此战必败,随便打打就是了,不用浪费了刚得的高等级药物,药物醒来后不会消失.动手吧~!十八年后,俺又是一条好汉~!醒来后剧情,发现婶婶在床边敲打着,原来刚才发生的一切只是南柯一梦. 支线剧情:打开左侧[神仙茶]宝箱会触发土妖剧情.他想借逍遥身上的宝剑[纯阳剑]杀独角青龙,可以选择借或不借.借的话在装备栏里换上[木剑],再给他即可,借给他是触发灵儿版隐