1、给出一个问题:给你一个整形数组,这个数组中除了一个数字只出现一次外,其他数字都只出现两次,求出那个只出现一次的数字?
要求:时间复杂度为O(n) , 空间复杂度为O(1)。
这个题目的难点在于空间复杂度的限制。
解法:一个数出现两个,两个数相同,而相等两个数异或的值为0 , 所以,我们只需要把整个数组的数都异或一遍,我们就能得到只出现了一次的那个数字
int g...
分类:
其他好文 时间:
2014-07-23 13:13:26
阅读次数:
204
Insertion Sort ListSort a linked list using insertion sort.算法思路:最基本的插入排序,时间复杂度O(n*n),空间复杂度O(1)代码: 1 public class Solution { 2 public ListNode inse...
分类:
其他好文 时间:
2014-07-22 00:23:34
阅读次数:
204
题目来源,待字闺中,原创@陈利人 ,欢迎大家继续关注微信公众账号“待字闺中”
给定数组A,大小为n,数组元素为1到n的数字,不过有的数字出现了多次,有的数字没有出现。请给出算法和程序,统计哪些数字没有出现,哪些数字出现了多少次。能够在O(n)的时间复杂度,O(1)的空间复杂度要求下完成么?
这个题目,是有一定技巧的。技巧是需要慢慢积累,待经验多了之后,可以灵感或者直觉,就产生了技巧。如...
分类:
其他好文 时间:
2014-07-21 15:18:05
阅读次数:
229
【程序员编程艺术】学习记录1:左旋转字符串之指针翻转法
题目:左旋转字符串
定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部,如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数,要求对长度为n的字符串操作的时间复杂度为O(n),空间复杂度为O(n)
思路一、暴力移位法
//暴力移位法
void leftshiftone(char *s, ...
分类:
其他好文 时间:
2014-07-17 11:06:47
阅读次数:
216
首先简单谈下高速排序的特点,时间复杂度O(nLog n),最差时间复杂度O(n^2),平均时间O(nLog n).由于用到了函数栈,空间复杂度为O(lg n),最差为O(n).是一种不稳定的排序方法。基本思想是分治法,这位大大的http://blog.csdn.net/morewindows/art...
分类:
其他好文 时间:
2014-07-16 19:29:46
阅读次数:
210
问题描述:在长度为n的序列中,找出其最大的N个数1.冒泡排序每冒泡一次,可将最大的数放到序列尾部,冒泡N次即可。时间复杂度:O(N*n)空间复杂度:O(1)2.扫描数组,将最大的N个数存在缓存中,当有更大的数到来时替换缓存中的数TOP_N(A,N) n = length of A cre...
分类:
其他好文 时间:
2014-07-16 18:18:57
阅读次数:
211
圆圈中最后剩下的数字(递推公式) 代码(C++)本文地址: http://blog.csdn.net/caroline_wendy题目: 0,1...,n-1这n个数字排成一个圆圈, 从数字0开始每次从这个圆圈里删除第m个数字.求出这个圆圈里最后剩下的数字.可以推导出约瑟夫环的递推公式, 使用循环进行求解, 时间复杂度O(n), 空间复杂度O(1).代码:/*
* main.cpp
*
*...
分类:
编程语言 时间:
2014-07-16 17:25:12
阅读次数:
206
本博文向大家介绍了插入排序的三种实现:直接插入排序,二分查找插入排序,希尔排序。详细分析的其实现过程、时间复杂度和空间复杂度、稳定性以及优化改进策略。最后简单的做了下性能测试。
分类:
其他好文 时间:
2014-07-15 09:59:26
阅读次数:
261
该算法时间复杂度为O(n^2),空间复杂度为O(1) ;//选择排序(前部为有序序列,后部为无序序列)#includeint main() { int a[] = {49,38,65,49,76,13,27,52} ; int i , j , k ; for(i = 0 ; i ...
分类:
其他好文 时间:
2014-07-15 00:00:46
阅读次数:
204
该算法时间复杂度与输入的顺序有关,如果输入的是一组有序的数据,时间复杂度为O(n),如果是一组无序的数据,时间复杂度为O(n^2);空间复杂度为O(1);//冒泡排序#includeint main() { int a[] = {49,38,65,49,76,13,27,52}; //...
分类:
其他好文 时间:
2014-07-14 22:44:16
阅读次数:
159