码迷,mamicode.com
首页 >  
搜索关键字:空间复杂度    ( 2067个结果
一个整型数组里除了一个或者两个或者三个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)
粗糙的给出了分析,最近比较累,以后会改进的。题目中包括三个小的问题,由简单到复杂:1,如果只有一个出现一次,考察到异或的性质,就是如果同一个数字和自己异或的活结果为零,那么循环遍历一遍数组,将数组中的元素全部做异或运算,那么出现两次的数字全部异或掉了,得到的结果就是只出现一次的那个数字。2,如果有两...
分类:编程语言   时间:2015-05-01 10:37:06    阅读次数:186
编程之美学习之快速找出故障机器
这种问题以及方法很常见。主要是思路要开阔,讲已知的问题抽象成数学模型或者函数表达式,这正是数学建模的真谛,problem solving(解决实际问题的能力)。法一:利用计数排序,用数组记下每个ID出现的次数,然后找出出现一次的那个ID,时空复杂度都是O(N)。现在如果数据量很大,那么这样的空间复杂度是无法被容忍的法二:利用两个相同的数异或结果为0,将所有的ID都异或一遍,显然最后剩下的值,即为出现...
分类:其他好文   时间:2015-04-29 17:12:47    阅读次数:143
OJ练习36——T189 Rotate Array
把数组做给定次数的rotate操作。rotate一次:即把末尾的元素放到开头,将其他的元素循环右移一个单位。【思路】1.再开个空间,将末尾的k个元素按从前到后的顺序放在新数组的开头,再将原数组剩下的元素按从前到后的顺序赋给新数组剩下的空间。节省了时间复杂度,增加了空间复杂度。2.顺向思维,每次处理一...
分类:其他好文   时间:2015-04-29 16:38:20    阅读次数:139
三个水王
一、题目 随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗?二、设计思路 做过找一个水王的的题目,这次找的是三个水王。 1、可以对帖子进行统计,数量最多的三个帖子为水王,但是这需要特别大的空间复杂度,不适用...
分类:其他好文   时间:2015-04-28 22:19:57    阅读次数:133
[LeetCode]-004-Median of Two Sorted Arrays
网址:https://leetcode.com/problems/median-of-two-sorted-arrays/ 题意: 给了两组有序数,找出他们总的中位数 提示: 中位数是左右相等数目数的值,如果不存在,则取左右相等数目数的两个数的平均值. 解法1: 把两组数合并成一组数.也可以是O(m+n). 但空间复杂度是O(m+n). 明显有更好的解法. 解法2: 因为两组数...
分类:其他好文   时间:2015-04-28 21:06:58    阅读次数:119
zz Morris Traversal方法遍历二叉树(非递归,不用栈,O(1)空间)
转载出处 http://www.cnblogs.com/AnnieKim/archive/2013/06/15/MorrisTraversal.html博主很认真,这里转载一下以防丢失链接本文主要解决一个问题,如何实现二叉树的前中后序遍历,有两个要求:1. O(1)空间复杂度,即只能使用常数空间;2...
分类:其他好文   时间:2015-04-28 07:03:17    阅读次数:148
编程之美3.6—判断两个链表是否相交
解法一: 判断第一个链表的每个节点是否在第二个链表中,O(M*N); 解法二: 对第一个链表的节点地址hash排序,建立hash表,然后对第二个链表的每个节点的地址查询hash表,如出现,相交 时间复杂度O(M+N),空间复杂度O(M)。 解法三: 把第二个链表接在第一个链表后面,得到的链表有环,相交,否则,不相交。‘ 第二个链表的表头一定在环上,只需从第二个链表开始...
分类:其他好文   时间:2015-04-27 23:44:50    阅读次数:131
C++求解字符串(最小子字符串,最大子字符串,删除指定字符串)
#include #include #define SIZE 10 #define MAXVALUE 0x7fffffff using namespace std; //题目是:求一个字符串中最小字串. //求最小字串,比求最大字串难的多,下面有我的求最大字串代码,我没有想到更好的方法,下面的这个方法虽然空间复杂度太大,可是时间复杂度是比较快的。 template struct Node {...
分类:编程语言   时间:2015-04-27 11:23:56    阅读次数:185
连续子数组的和的最大值、最小值以及和的绝对值的最大值、最小值
#include #include #include using namespace std; //求子数组的最小和 //利用的是dp的思想,依次遍历数组中的每个元素,把他们相加,如果加起来大于0,则 //把当前元素之和清为0,否则则和最小和比较,更新最小和,最后得到必是子数组的最小和 //时间复杂度:o(n) 空间复杂度:o(1) int minSum(vector &num) { i...
分类:编程语言   时间:2015-04-27 10:03:18    阅读次数:169
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!