算法题:找到1到n(乱序)中缺失的两个数_1~n中丢失的两个树-程序员宅基地

技术标签: python  

要求用O(n)的时间复杂度进行查找:

1. 申请额外空间n个空间,记录当前数字是否出现过

def find1(a, n):
    res = []
    b = [0 for x in range(n)]
    for i in a:
        b[i-1] = 1
    for i in range(n):
        if b[i] == 0:
            res.append(i+1)
    return res

 

2.利用数学公式,先求1到n的平方和和1到n的平方和,再求1到n的平方和和1到n的和,两式相减解方程

def find2(a, n):
    sum1, sum2, sum1_, sum2_ = 0, 0, 0, 0
    for i in a:
        sum1 += i
        sum1_ += i**2
    for i in range(1, n+1):
        sum2 += i
        sum2_ += i**2
    sum_ = sum2 - sum1
    sum__ = sum2_ - sum1_
    for i in range(n):
        if i**2 + (sum_ - i) ** 2 == sum__:
            return [i, sum_-i]

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qqMiSa/article/details/114419233

智能推荐

1 100含6的数C语言while,C语言分别用while()和for()编写程序,求1-100所有数的和._唐珑珂的博客-程序员宅基地

c语言 while(i--)76543210i减一的过程是在while判断和a[i]赋值之间进行的也就是相当于while(i)i=i-1;a[i]=i求救C语言用while语句#includevoidmain(){inti=0,j;whc语言编程:分别用for循环和while循环,找出1000到2000间所有素数(只能被 1和自身整除的数)先是for循环的:#include#in..._编程计算100以内含6的所有自然数(例如:16,26,60等)的倒数之和。 要求: (1)计算结

简单编程 (二十六)窗体的创建_cfreamewnd-程序员宅基地

窗体的创建 尝试以3种不同的颜色和字体在一个窗体上绘制字符串“欢迎来到张志昌的个人专栏!”。通过此实验练习窗体的创建和常用方法。_cfreamewnd

滑动改变toolbar透明度_appbarlayout 设置不透明-程序员宅基地

因为根据布局的滑动改变toolbar的透明度在各大app上都比较常见,而且最近公司项目也要这个效果,所以就去实现了一下,效果不错,所以就记录一下这个实现.因为我用的布局是ScrollView,所以我想着在他的滑动监听里去实现,可突然发现它并没有现成的监听滑动的方法,但是有一个onScrollChanged方法,所以就自定义一个MyScrollView类,该类核心代码如下:_appbarlayout 设置不透明

产品经理必备技能之业务流程图_产品经理宿管系统业务流程图-程序员宅基地

业务流程图(TFD)是一种描述管理系统内各单位、人员之间的业务关系,作业顺序和管理信息流向的图表。流程是为了达到特定的目标而进行的一系列有逻辑性的操作过程,它可以不规范、可以充满问题,但它确确实实存在着。只要有事情或任务,就会有流程的存在,将有一定规律的流程用图表表示出来可以让流程可视化,从而有利于流程的重组优化。在工作中,我们常用到的流程图有:业务流程图、页面流程图和数据流程图。作为产品,经..._产品经理宿管系统业务流程图

java基本类库结构图_常用java类库的构图-程序员宅基地

网上找了一圈,没有找到 JDK 包的所有目录图,于是只好自己动手啦.1.下载JDK要想获取 JDK 开发包中的所有目录,前提当然是先下载 JDK 了.访问 Oracle JDK 官网地址选择 jdk 版本点击 zip file 链接,直接下载,建议使用迅雷2.使用 Echarts 来画目录结构树状图使用echarts画树状图自带排序,且比较美观,还能自动伸缩,很不错.树状图实例3.生成 JDK 目录结构 json 数据/** * 获取目录结构,并转为js._常用java类库的构图

无法定位程序输入点ucrtbase.XXX 解决方法_无法定位程序输入点ucrtbase.wcsncmp-程序员宅基地

无法定位程序输入点ucrtbase.XXX 解决方法一般出现在win7,首先升级win7 sp1,然后安装Visual C++ Redistributable for Visual Studio 2015For Windows 64-bitVisual C++ Redistributable for Visual Studio 2015 (64-bit)For Windows 32-bitVisual C++ Redistributable for Visual Studio 2015 (32-b_无法定位程序输入点ucrtbase.wcsncmp

随便推点

<2012 11 15> Linux内核驱动总体框架——《深入理解Linux内核》chapter 13 读书笔记-程序员宅基地

·I/O 体系结构(这里,除了CPU和RAM之外的设备都称为I/O) # CPU、RAM、I/O 之间的数据流通 # PCI、ISA、EISA、SCSI、USB # 不同总线之间用“bridge”连接   ·I/O设备与总线的硬件组织层次   #I/O端口(CPU寻址与数据通路,映射I/O)   #接口(连接电路,定义电平等)     #...

linux+nginx+uwsgi+flask部署四部曲后续:使用supervisor管理uwsgi服务_linux 安装使用nginx+supervisord+flask-程序员宅基地

linux+nginx+uwsgi+flask部署四部曲之一:安装python3.6linux+nginx+uwsgi+flask部署四部曲之二:安装uwsgilinux+nginx+uwsgi+flask部署四部曲之三:安装nginxlinux+nginx+uwsgi+flask部署四部曲之四:部署flask应用程序前言这篇文章是部署四部曲的后续,在 web 应用部署到线上后..._linux 安装使用nginx+supervisord+flask

QList类介绍-程序员宅基地

QList类介绍分类: QT 2010-12-07 12:37 5628人阅读 评论(0)收藏 举报iterator存储qtlistinsertapiQList是一种表示链表的模板类。QList是Qt的一种泛型容器类。它以链表方式存储一组值,并能对这组数据进行快速索引,还提供了快速插入和删除等操作。QList、QLinkedList和QVec

发货100全功能网站系统源码_发卡100源码-程序员宅基地

介绍:源码自带11套模板,每套模板都能实现不同的功能,《新闻资讯,虚拟商品发货,在线付费阅读,付费资源下载,发卡系统,三级分销,在线教育系统,免登录购买 等……》源码不要点升级,升级后不保证可以使用,搭建说明:演示环境: Linux+宝塔 PHP7.0 MYSQL5.6 阿帕奇或者NX 上传源码至网站根目录, 域名/install 按提示安装网盘下载地址:发货100.zip - 蓝奏云..._发卡100源码

根据地址获取经纬度-程序员宅基地

有时候在开发中我们会需要根据模糊地址获取经纬度,国家信息中心的天地图api可以帮助我们实现这个功能,通过模糊地址获取经纬度直接上代码:/** * 通过地址获取经纬度 * * @param address * @return */ public static Map&lt;String, String&gt; getLngAndLag(..._根据地址获取经纬度

Python pandas.DataFrame.droplevel函数方法的使用-程序员宅基地

Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中pandas.DataFrame.droplevel方法的使用。原文地址:Python pandas.DataFrame.droplevel函数方法的使用...