本博客rss订阅地址: http://feed.cnblogs.com/blog/u/147990/rss

随笔分类 -  OJ

摘要:题目如下: (题目链接)Given a 2D board containing'X'and'O', capture all regions surrounded by'X'.A region is captured by flipping all'O's into'X's in that surro... 阅读全文
posted @ 2013-11-13 15:46 tenos 阅读(784) 评论(0) 推荐(0) 编辑
摘要:LeetCode:Palindrome Partitioning题目如下:(把一个字符串划分成几个回文子串,枚举所有可能的划分)Given a strings, partitionssuch that every substring of the partition is a palindrome.... 阅读全文
posted @ 2013-11-13 13:56 tenos 阅读(1560) 评论(0) 推荐(0) 编辑
摘要:题目如下:实现克隆图的算法 题目链接Clone an undirected graph. Each node in the graph contains alabeland a list of itsneighbors.OJ's undirected graph serialization:Node... 阅读全文
posted @ 2013-11-11 19:54 tenos 阅读(1471) 评论(0) 推荐(0) 编辑
摘要:题目大意:设计一个用于LRU cache算法的数据结构。 题目链接。关于LRU的基本知识可参考here分析:为了保持cache的性能,使查找,插入,删除都有较高的性能,我们使用双向链表(std::list)和哈希表(std::unordered_map)作为cache的数据结构,因为:双向链表插入删... 阅读全文
posted @ 2013-11-10 22:19 tenos 阅读(7497) 评论(0) 推荐(0) 编辑
摘要:题目(题目链接):Given a singly linked listL:L0→L1→…→Ln-1→Ln,reorder it to:L0→Ln→L1→Ln-1→L2→Ln-2→…You must do this in-place without altering the nodes' values... 阅读全文
posted @ 2013-11-10 18:57 tenos 阅读(2797) 评论(0) 推荐(1) 编辑
摘要:题目:非递归实现二叉树的后序遍历。题目链接算法1:非递归使用栈。首先把根节点压栈,然后循环如下操作:用一个变量来记录上次访问的节点,如果当前栈顶元素左右儿子都为空 或者 上次访问的节点非空且等于栈顶节点的左儿子或右儿子,则直接访问;否则把栈顶元素的右节点和左节点依次压栈。代码如下: 1 /** 2 ... 阅读全文
posted @ 2013-11-10 17:08 tenos 阅读(2063) 评论(0) 推荐(0) 编辑
摘要:题目:非递归实现二叉树的前序遍历。题目链接算法1:使用栈的非递归遍历。先用根节点初始化栈,然后循环如下操作:访问栈顶节点,先后把栈顶节点右节点和左节点压栈(次序不能反,先右节点,后左节点),代码如下: 1 /** 2 * Definition for binary tree 3 * struct... 阅读全文
posted @ 2013-11-10 17:02 tenos 阅读(1939) 评论(0) 推荐(0) 编辑
摘要:题目:判断单链表是否有环,如果有则找出环的起点。题目链接这是另一道题的扩展,利用快慢指针判断出是否有环后,还需要找出环的起点,分析如下:设链表长度为len(链表中非空next指针的个数,下面所说的长度均为非空next指针的个数),链表head到环的起点长度为a,环起点到快慢指针相遇点的长度为b,环的... 阅读全文
posted @ 2013-11-10 15:17 tenos 阅读(2038) 评论(0) 推荐(0) 编辑
摘要:题目:判断单链表是否有环,要求O(1)空间复杂度。题目链接利用快慢指针,开始两个指针均指向链表head,然后循环移动,慢指针移动1步,快指针则移动2步,如果链表有环则两个指针一定会相遇。代码如下: 1 /** 2 * Definition for singly-linked list. 3 * ... 阅读全文
posted @ 2013-11-10 14:39 tenos 阅读(1293) 评论(0) 推荐(0) 编辑
摘要:pat 2-09 装箱问题模拟 1 #include 2 #include 3 #include 4 using namespace std; 5 6 int findMatchBox(int tsize, vector &box) 7 { 8 for(int i = 0; i = tsize)return i;10 return -1;11 }12 13 int main()14 {15 int N;16 scanf("%d", &N);17 vector box;//box[i]为箱子i的剩余容量18 for(int i = 0; i 2... 阅读全文
posted @ 2013-11-07 18:57 tenos 阅读(832) 评论(0) 推荐(0) 编辑
摘要:pat1065 A+B and C 主要是注意一下加法溢出的情况,不要试图使用double,因为它的精度是15~16位,不能满足精度要求,代码如下: 1 #include 2 #include 3 #include 4 //double精度为15~16位,不能满足精度要求 5 int main() 6 { 7 int testNum; 8 scanf("%d",&testNum); 9 long long MAX = LONG_LONG_MAX; //pow(2,63) - 1,10 long long MIN = LONG... 阅读全文
posted @ 2013-11-04 16:05 tenos 阅读(1030) 评论(0) 推荐(0) 编辑
摘要:pat 1069The Black Hole of Numbers水题,代码如下: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 bool isSame(char buf[]) 8 { 9 int i = 1;10 while(buf[i] != '\0')11 {12 if(buf[i] != buf[0])return false;13 else i++;14 }15 ret... 阅读全文
posted @ 2013-11-03 18:42 tenos 阅读(1267) 评论(0) 推荐(0) 编辑
摘要:题目地址:here题目大意:无环连通图也可以视为一棵树,选定图中任意一点作为根,如果这时候整个树的深度最大,该点称为 deepest root。 给定一个图,按升序输出所有 deepest root。如果给定的图有多个连通分量,则输出连通分量的数量。解法:先任选一点A从该点开始dfs,找出距离该点最远的点B,则B是一个deepest root;然后从B点开始dfs,找到距离B最远的所有点,这些点加上B点都是deepest root。对于有多个连通分支的,我们可以通过遍历完所有节点调用dfs函数的次数来判断(当然也可以用并查集来求连通分支数目)。 ... 阅读全文
posted @ 2013-11-01 14:00 tenos 阅读(2574) 评论(1) 推荐(1) 编辑
摘要:题目地址:herepat 2-05求集合数据的均方差没什么可说的,大水题 1 #include 2 #include 3 int main() 4 { 5 int n; 6 scanf("%d", &n); 7 int data[n]; 8 double average = 0.0; 9 for(int i = 0; i 2 #include 3 using namespace std; 4 5 int main() 6 { 7 int num,times; 8 scanf("%d%d", &num, &times); 9 i.. 阅读全文
posted @ 2013-10-28 21:02 tenos 阅读(797) 评论(0) 推荐(0) 编辑
摘要:题目地址:hereThere areNgas stations along a circular route, where the amount of gas at stationiisgas[i].You have a car with an unlimited gas tank and it c... 阅读全文
posted @ 2013-10-26 19:59 tenos 阅读(2716) 评论(7) 推荐(0) 编辑
摘要:题目地址:here题目大意:几个小孩站一排,每个小孩有个等级值,现在给小孩发糖,发的时候要遵守2个规则:(1)每个小孩至少一颗糖(2)两个相邻的小孩中,等级大的小孩一定比等级小的小孩糖多,求发糖的数目的最小值。本文提供两个算法,第一个是我自己做题时用的,第二个是网上看题解时看到的算法1:该算法采用分... 阅读全文
posted @ 2013-10-26 14:55 tenos 阅读(6158) 评论(3) 推荐(1) 编辑
摘要:题目地址:here题目大意:一个整数数组中,只有一个数出现一次,其余数都出现3次,在O(n)时间,O(1)空间内找到这个出现一次的数对于”只有一个数出现一次,其余数出现2次“的情况,很简单,只要把数组中所有数异或的结果就是这个出现一次的数,leetcode上也有这个题目。关于本题:我们用一个大小为3... 阅读全文
posted @ 2013-10-25 16:32 tenos 阅读(888) 评论(0) 推荐(0) 编辑
摘要:题目地址:here题目大意:深拷贝一个链表,链表除了含有next指针外,还包含一个random指针,该指针指向字符串中的某个节点或者为空。节点定义为: struct RandomListNode { int label; RandomListNode *next, *random... 阅读全文
posted @ 2013-10-24 23:02 tenos 阅读(9560) 评论(1) 推荐(1) 编辑
摘要:题目地址:请戳我这一题在leetcode前面一道题word break 的基础上用数组保存前驱路径,然后在前驱路径上用DFS可以构造所有解。但是要注意的是动态规划中要去掉前一道题的一些约束条件(具体可以对比两段代码),如果不去掉则会漏掉一些解(前一道题加约束条件是为了更快的判断是字符串是够能被分词,... 阅读全文
posted @ 2013-10-24 11:14 tenos 阅读(2192) 评论(0) 推荐(0) 编辑
摘要:题目地址:http://oj.leetcode.com/problems/word-break/简单的动态规划问题,采用自顶向下的备忘录方法,代码如下: 1 class Solution { 2 public: 3 bool dictContain(unordered_set &dict, ... 阅读全文
posted @ 2013-10-23 20:10 tenos 阅读(1836) 评论(2) 推荐(0) 编辑


本博客rss订阅地址: http://feed.cnblogs.com/blog/u/147990/rss

公益页面-寻找遗失儿童