什么是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. Linux上安装Julia-1.1

    Julia 在Linux上的安装 浙江大学Julia镜像: 浙江大学Julia镜像 下载1.1版本: wget https://mirrors.zju.edu.cn/julia/releases/v1 ...

  2. 如何下载spring sts

    1.打开https://spring.io/ 2.翻到页面最底部点击tools 3.页面下滑点击Download STS4 Windows 64-bit

  3. layer简单使用

    官方:https://www.layui.com/doc/modules/layer.html 源码:https://github.com/xiaostudy/web_sample 效果 目录结构 代 ...

  4. 安装matplotlib,报错ERROR: Command errored out with exit status 1:

    使用pip install matplotlib 出现报错信息: 发现这行报错 : 我是在pycharm上安装的,可是提示我去安装 Microsoft Visual C++ ,然后去百度查了下,发现只 ...

  5. 关于SpringMVC中的转发与重定向的说明

    写的非常详细,参看该地址:https://www.zifangsky.cn/661.html 总结: 1.请求转发:url地址不变,可带参数,如?username=forward 2.请求重定向:ur ...

  6. POJ3046ANT_COUNTING

    #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> ...

  7. 剑指offer43:左旋转字符串(字符串):对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。

    1 题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”a ...

  8. Python re 模块findall() 函数返回值展现方式详解

    findall 函数: 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表. 注意: match 和 search 是匹配一次 findall 匹配所有,mat ...

  9. golang数据基本数据类型和string类型的转换

    基本类型之间的转换 golang在不同类型的变量之间赋值时需要显式转换,也就是说golang中数据类型不能自动转换. 表达式T(v)将值v转换为类型T 1.数据类型的转换可以是从范围小——>范围 ...

  10. win10使用vnc远程到Ubuntu 19.04

    主要参考:https://www.cyberciti.biz/faq/install-and-configure-tigervnc-server-on-ubuntu-18-04/ https://ww ...