粗糙的给出了分析,最近比较累,以后会改进的。题目中包括三个小的问题,由简单到复杂:1,如果只有一个出现一次,考察到异或的性质,就是如果同一个数字和自己异或的活结果为零,那么循环遍历一遍数组,将数组中的元素全部做异或运算,那么出现两次的数字全部异或掉了,得到的结果就是只出现一次的那个数字。2,如果有两...
分类:
编程语言 时间:
2015-05-01 10:37:06
阅读次数:
186
这种问题以及方法很常见。主要是思路要开阔,讲已知的问题抽象成数学模型或者函数表达式,这正是数学建模的真谛,problem solving(解决实际问题的能力)。法一:利用计数排序,用数组记下每个ID出现的次数,然后找出出现一次的那个ID,时空复杂度都是O(N)。现在如果数据量很大,那么这样的空间复杂度是无法被容忍的法二:利用两个相同的数异或结果为0,将所有的ID都异或一遍,显然最后剩下的值,即为出现...
分类:
其他好文 时间:
2015-04-29 17:12:47
阅读次数:
143
把数组做给定次数的rotate操作。rotate一次:即把末尾的元素放到开头,将其他的元素循环右移一个单位。【思路】1.再开个空间,将末尾的k个元素按从前到后的顺序放在新数组的开头,再将原数组剩下的元素按从前到后的顺序赋给新数组剩下的空间。节省了时间复杂度,增加了空间复杂度。2.顺向思维,每次处理一...
分类:
其他好文 时间:
2015-04-29 16:38:20
阅读次数:
139
一、题目 随着论坛的发展,管理员发现水王没有了,但是统计结果表明,有三个发帖很多的ID。据统计他们的发帖数量超过了1/4,你能从发帖列表中快速找到他们吗?二、设计思路 做过找一个水王的的题目,这次找的是三个水王。 1、可以对帖子进行统计,数量最多的三个帖子为水王,但是这需要特别大的空间复杂度,不适用...
分类:
其他好文 时间:
2015-04-28 22:19:57
阅读次数:
133
网址:https://leetcode.com/problems/median-of-two-sorted-arrays/
题意:
给了两组有序数,找出他们总的中位数
提示:
中位数是左右相等数目数的值,如果不存在,则取左右相等数目数的两个数的平均值.
解法1:
把两组数合并成一组数.也可以是O(m+n).
但空间复杂度是O(m+n).
明显有更好的解法.
解法2:
因为两组数...
分类:
其他好文 时间:
2015-04-28 21:06:58
阅读次数:
119
转载出处 http://www.cnblogs.com/AnnieKim/archive/2013/06/15/MorrisTraversal.html博主很认真,这里转载一下以防丢失链接本文主要解决一个问题,如何实现二叉树的前中后序遍历,有两个要求:1. O(1)空间复杂度,即只能使用常数空间;2...
分类:
其他好文 时间:
2015-04-28 07:03:17
阅读次数:
148
解法一:
判断第一个链表的每个节点是否在第二个链表中,O(M*N);
解法二:
对第一个链表的节点地址hash排序,建立hash表,然后对第二个链表的每个节点的地址查询hash表,如出现,相交
时间复杂度O(M+N),空间复杂度O(M)。
解法三:
把第二个链表接在第一个链表后面,得到的链表有环,相交,否则,不相交。‘
第二个链表的表头一定在环上,只需从第二个链表开始...
分类:
其他好文 时间:
2015-04-27 23:44:50
阅读次数:
131
#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