题目 一个整型数组里除了两个数字之外,其他的数字都出现了两次,请写程序找出这两个只出现一次的数字。要求时间复杂度是 O(n),空间复杂度是 O(1)。 思路 1.异或运算的一个性质:任何一个数字异或它自己都等于 0。也就是说, 如果我们从头到尾依次异或数组中的每一个数字,那么最终的结果刚好是那个只出 ...
分类:
编程语言 时间:
2019-01-20 13:41:58
阅读次数:
296
上一篇简单的开了一个头,简单介绍了一下所谓的时间复杂度与空间复杂度,从这篇开始将陆陆续续写一下常用的数据结构:链表、队列、栈、树等等。 <! more 链表当初是我在学校时唯一死磕过的数据结构,那个时候自己还算是一个好学生,虽然上课没怎么听懂,但是课后还是根据仔细调试过老师给的代码,硬是自己给弄懂了 ...
分类:
编程语言 时间:
2019-01-19 22:53:52
阅读次数:
289
1、定义 算法复杂度是衡量代码执行时,所消耗资源的多少,包括时间资源和内存资源,分别对应于时间复杂度和空间复杂度。 针对时间复杂度,假设问题规模n,记时间频度T(n),引入辅助函数f(n),如果存在正常数c,使得c*f(n) >= T(n)恒成立,则称O(f(n))为渐进时间复杂度,记作T(n)=O ...
分类:
其他好文 时间:
2019-01-19 21:07:47
阅读次数:
193
废话:记得在我刚实习那会,在某家公司写PHP,主要对接‘某赞’ ‘某盟’ ‘微信’的接口,回想起来写代码真的是一把梭啊,能跑起来就行那种,从不考虑程序性能,比如时间复杂度和空间复杂度。 ok,经过我努力学习,我现在要装逼了(其实没什么技术含量),讲一下接口服务的开发。 1.有人说用Session判断 ...
分类:
Web程序 时间:
2019-01-19 13:24:08
阅读次数:
295
第一轮: Leetcode 2变种。1->2->3和8->7->7返回链表1->0->0->0,输入链表和原题相反。三种方法,vector存储,O(n)时间复杂度,O(n)空间复杂度。链表反转,O(n)时间复杂度,O(1)空间复杂度。对9的位置的特殊处理,one-pass时间复杂度。 第二轮: 给两 ...
分类:
其他好文 时间:
2019-01-19 13:20:58
阅读次数:
201
冒泡排序 冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 作 ...
分类:
编程语言 时间:
2019-01-19 11:23:17
阅读次数:
145
选择排序 选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n2) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。 1. 算法步骤 1. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置 2. 再从剩余未排序元素中继续寻找最小( ...
分类:
编程语言 时间:
2019-01-19 11:15:22
阅读次数:
180
分类算法之k-近邻 分类算法之k-近邻 k-近邻算法采用测量不同特征值之间的距离来进行分类 优点:精度高、对异常值不敏感、无数据输入假定 缺点:计算复杂度高、空间复杂度高 使用数据范围:数值型和标称型 一个例子弄懂k-近邻 电影可以按照题材分类,每个题材又是如何定义的呢?那么假如两种类型的电影,动作 ...
分类:
编程语言 时间:
2019-01-18 13:58:54
阅读次数:
251
浅谈堆: "https://www.cnblogs.com/AKMer/p/10284629.html" 题目传送门: "http://poj.org/problem?id=1442" 用对顶堆维护第$k$小即可。保持小根堆大小逐渐递增就行。 时间复杂度:$O(mlogn)$ 空间复杂度:$O(n) ...
分类:
其他好文 时间:
2019-01-18 12:27:10
阅读次数:
139
题目链接 动态区间第k小,但是这道题的话用主席树+树状数组套线段树的空间复杂度是O(nlog2n)会爆掉。 另一种替代的方法是用树状数组套平衡树,空间复杂度降到了O(nlogn),但我感觉平衡树是个挺恶心的东西,而且时间复杂度是O(nlog3n),比主席树还多了个logn。 最高效的方法是用一个叫整 ...
分类:
其他好文 时间:
2019-01-18 10:55:22
阅读次数:
191