什么是2sum问题呢?举个例子就明白了:对于数列:【0、1、2、3、4、5、6、7、8、9】,求两数相加=9的所有两数的组合,所以结果为:【0、9】,【1、8】,【2、7】,【3、6】,【4、5】。所以就是要在一组数据中将结果全部输出出来,说到两个数相加等于某一个数,那也有可能是三个数、四个数相加呀,所以说其实这个问题可以归纳为ksum问题,只不过咱们先从2sum最基础的开始接触。

如何实现呢?这里用两种方式来实现,时间复杂度分别为O(n^2)和O(n),可见第一种是最基础的实现,好理解,但是性能不太高;而第二种则是对其进行进一步优化的,下面开始:

O(n^2)实现

这里就不多解释了,小朋友都能理解~~

O(n)线性级别超高性能的优化实现:

这种高效的实现方式有个前提:是一个排好序的数组。所以如果在面试的时候可以跟面试官沟通是否可以对数组进行排序来达到求解的目的,如果是的话那这种方式就完美可以回答了,那如果面试官不让排序也能达到O(n)级别的高性能优化实现呢?在之后也会有一个方法能达到,这里先来学习下通过排序达到目的的解法。

思路:

对于上面这个有序的数列中,找出两数相加=9的所有组合,可以这样:

思路总结:

1、如果left + right > 目标值,则right--;

2、如果left + right < 目标值, 则left++;

3、如果left == right,则输出数组,然后将left++、right--继续往中间去找寻。

是不是思路so easy~下面看代码:

程序不多解释了,一看就懂!

2sum问题求解的更多相关文章

  1. 迷宫问题求解之“A*搜索”(二)

    摘要:在迷宫问题求解之"穷举+回溯"(一)这篇文章中采用"穷举+回溯"的思想,虽然能从迷宫的入口到出口找出一条简单路径,但是找出来的不是最优路径.因此本文采用A ...

  2. 《计算机问题求解》总结——2014年CCF计算机课程改革导教班(2014.07.11)

    一:引言     "心想事成".这是自己获得导教班学习机会的最佳概括.2013年年末学习李晓明老师的<人群与网络>课程:随后网络认识烟台大学贺利坚老师,了解到2013年 ...

  3. 2sum、3sum、4sum以及任意连续的数的和为sum、任意连续或者不连续的数的和为sum

    2sum 如果数组是无序的,先排序(n*logn),然后用两个指针i,j,各自指向数组的首尾两端,令i=0,j=n-1,然后i++,j--,逐次判断a[i]+a[j]?=sum,如果某一刻a[i]+a ...

  4. 求和问题总结(leetcode 2Sum, 3Sum, 4Sum, K Sum)

    转自  http://tech-wonderland.net/blog/summary-of-ksum-problems.html 前言: 做过leetcode的人都知道, 里面有2sum, 3sum ...

  5. 2Sum,3Sum,4Sum,kSum,3Sum Closest系列

    1).2sum 1.题意:找出数组中和为target的所有数对 2.思路:排序数组,然后用两个指针i.j,一前一后,计算两个指针所指内容的和与target的关系,如果小于target,i右移,如果大于 ...

  6. 一个"2-SUM"问题

    题目要求: Download the text file here. (Right click and save link as). The goal of this problem is to im ...

  7. 🧬 C# 神经网络计算库和问题求解

    Andrew Kirillov 著 Conmajia 译 2019 年 1 月 12 日 原文发表于 CodeProject(2006 年 11 月 19 日),已获作者本人授权. 本文介绍了一个用于 ...

  8. Sprite子节点透明度不能跟随父节点变化的问题求解(转)

    原出处忘记了. [已解决]Sprite子节点透明度不能跟随父节点变化的问题求解 自己封装了一个按钮控件,点击的时候封装了一些动作,其中有透明度的变化. 当点击发生的时候,Sprite本体执行正常,但是 ...

  9. python数据结构与算法之问题求解实例

    关于问题求解,书中有一个实际的案例. 上图是一个交叉路口的模型,现在问题是,怎么安排红绿灯才可以保证相应的行驶路线互不交错. 第一步,就是把问题弄清楚. 怎么能让每一条行驶路线不冲突呢? 其实,就是给 ...

随机推荐

  1. Java工程师学习指南第2部分:JavaWeb技术世界

    本文整理了微信公众号[Java技术江湖]发表和转载过的Java Web优质文章,想看到更多Java技术文章,就赶紧关注吧. IDEA中的Maven实战 老师,免费版的IDEA为啥不能使用Tomcat? ...

  2. Win10 企业版 激活 批处理

    cd %SystemRoot%\System32 wscript.exe slmgr.vbs /upk wscript.exe slmgr.vbs /ipk NPPR9-FWDCX-D2C8J-H87 ...

  3. 安装flask_mysqldb出现报错问题解析

    安装 mysqldb (pip3 install Flask-MySQLdb)报错 EnvironmentError: mysql_config not found ERROR: Command er ...

  4. linux命令帮助 man bash

    BASH(1) BASH(1) NAME bash - GNU Bourne-Again SHell (GNU 命令解释程序 “Bourne二世”) 概述(SYNOPSIS) bash [option ...

  5. 2、PHP变量

    2.1含义与定义形式 就是使用一个“标记符号”(标识符),来代表某个数据. 类比: 用一个名字(姓名),来代表某个人. 用一个身份证号码,来代表某个人... 用一个变量,就可以理解为“使用一个数据”. ...

  6. eNSP——利用单臂路由实现VLAN间路由

    原理: 以太网中,通常会使用VLAN技术隔离二层广播域来减少广播的影响,并增强网络的安全性和可管理性.其缺点是同时也严格地隔离了不同VLAN之间的任何二层流量,使分属于不同VLAN的用户不能直接互相通 ...

  7. Sed命令的使用详细解释

    Sed命令的使用详细解释 一:sed命令的简介 sed是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处 ...

  8. vue-cli3创建vue项目之vue.config.js配置

    module.exports = { // 基本路径 publicPath: '/', // 输出文件目录 outputDir: 'dist', // eslint-loader 是否在保存的时候检查 ...

  9. 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧

    目录 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧 25.1 Shell中的色彩处理 25.2 awk基本应用 25.2.1 概念 25.2.2实例演示 25.3 awk ...

  10. jquery(第一章)认识jquery

    Jquery对象就是通过JQuery包装DOM对象后产生的对象,在JQuery对象中无法使用DOM对象的任何方法. 1.4.2 JQuery对象的和DOM对象的互相转换 若获取的对象是JQuery对象 ...