上一页 1 2 3 4 5 6 7 8 ··· 10 下一页
摘要: XX公司的一道笔试题,煤矿有3000吨煤要拿到市场上卖,有一辆火车可以用来运煤,火车最多能装1000吨煤,且火车本身需要烧煤做动力,每走1公里消耗1吨煤,如何运煤才能使得运到市场的煤最多,最多是多少? 最优解: 1,火车从煤矿出发3次,也即回来2次。(这样可以把3000吨都运出,回煤矿次数越多越费煤,所以最少需要回2次) 2,火车每次回煤矿要是空车。(如果不是空车,回煤矿两次显然... 阅读全文
posted @ 2012-10-05 15:33 紫红的泪 阅读(3249) 评论(0) 推荐(0) 编辑
摘要: 主要包括全排列和回溯两类,其中全排列可以递归与非递归,回溯也可以递归与非递归。于是加一起有4种解法。 #include <iostream> #include <algorithm> using namespace std; template <size_t N> struct ArraySizeHelper {char _[N];}... 阅读全文
posted @ 2012-10-04 23:26 紫红的泪 阅读(2119) 评论(0) 推荐(0) 编辑
摘要: 实现一个高效的不可变队列,队列有enqueue和dequeue,分别从队列push、pop一个元素,并返回新队列。原有队列保持不变。 template<typename T> class const_queue { public: const_queue() : m_nFrontIdx(0), m... 阅读全文
posted @ 2012-10-03 15:59 紫红的泪 阅读(947) 评论(0) 推荐(0) 编辑
摘要: 题意是要求在01矩阵中,把0的点的行和列都置零。 #include <iostream> #include <vector> #include <utility> using namespace std; void unguarded_setZero(int *matrix, int m, int n, int i, int j... 阅读全文
posted @ 2012-10-01 12:06 紫红的泪 阅读(410) 评论(0) 推荐(0) 编辑
摘要: 字符串乘法,有两个字符串表示的正数a、b,求乘积c,也用字符串表示。涉及字符串乘法、字符串加法。 class Solution { private: char mul(char a, char b, char &carry) { int val = (a - '0') * (b - '0') + (carry... 阅读全文
posted @ 2012-09-27 13:48 紫红的泪 阅读(1467) 评论(0) 推荐(0) 编辑
摘要: 就是合并两个有序链表了,递归解妥妥儿的。 ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { if (l1 == NULL) return l2; if (l2 == NULL) return l1; ListNode *ret = NULL; ... 阅读全文
posted @ 2012-09-27 11:14 紫红的泪 阅读(3522) 评论(1) 推荐(0) 编辑
摘要: ××公司面试题,看了后没想法,后搜一下发现居然是高中奥数。真无语了,这年头面试官都想干啥呢?!尼玛,这题你自己会做不啊?!平面上n个圆,任意两个都相交,是否有一条直线和所有的圆都有交点。 阅读全文
posted @ 2012-09-26 22:24 紫红的泪 阅读(1128) 评论(1) 推荐(0) 编辑
摘要: 神马是离散化:http://www.matrix67.com/blog/archives/108 例题:POJ 1151 Atlantis #include <iostream> #include <vector> #include <set> #include <algorithm> #include <iomanip> using n... 阅读全文
posted @ 2012-09-23 12:43 紫红的泪 阅读(560) 评论(0) 推荐(0) 编辑
摘要: 昨天面了一家对算法、数学要求比较高的公司。然后遇到了个经典概率题,没做出来。工程中基本没用到过的东西却拿来面试,很郁闷。为了搞定面试还是要把漏洞给补上。 用赌博解投硬币问题:http://www.matrix67.com/blog/archives/3638 投硬币问题的复杂分析:http://www.cnblogs.com/atyuwen/archive/2010/09/1... 阅读全文
posted @ 2012-09-19 10:55 紫红的泪 阅读(613) 评论(0) 推荐(0) 编辑
摘要: 向量的叉积性质都忘完了……但是它可以用来判断点在直线的某侧。进而可以解决点是否在三角形内,两个矩形是否重叠等问题。向量的叉积的模表示这两个向量围成的平行四边形的面积。 设矢量P = ( x1, y1 ),Q = ( x2, y2 ),则矢量叉积定义为由(0,0)、p1、p2和p1+p2所组成的平行四边形的带符号的面积,即:P×Q = x1*y2 - x2*y1,其结果是一个伪矢... 阅读全文
posted @ 2012-09-18 13:18 紫红的泪 阅读(7177) 评论(0) 推荐(2) 编辑
摘要: N条直线最多将平面划分为多少区域,如果换成折线,又是多少? 由上图可知: 两条直线最多一个交点,将平面分成了4个区域; 三条直线最多三个交点,将平面分成了7个区域; 可以推出: 每增加一条直线,如果增加m个交点,那么这条直线被新增加的m个交点,分成(m+1)段。每一段又会将原来的一个区域分成两块,因此,新增加了(m+1)个新区域。增加第N+1条... 阅读全文
posted @ 2012-09-17 21:23 紫红的泪 阅读(520) 评论(0) 推荐(0) 编辑
摘要: 题意是生成N位长的格雷码。格雷码是一种二进制的数值表示方法,两个连续值只有1位不同。例如,输入n=2,返回[0, 1, 3, 2]。对应的格雷码是这样的: 00 - 001 - 111 - 310 – 2 vector<int> grayCode(int n) { vector<int> vecRet; stack<int> s; ... 阅读全文
posted @ 2012-09-16 23:25 紫红的泪 阅读(886) 评论(0) 推荐(0) 编辑
摘要: 昨儿晚去笔了家公司,然后看到一个环链表转单链表的题。题是这样的,有个环链表,依次把第m个节点删除环链表(约瑟夫环操作)。最后根据节点删除顺序重建为单向链表,并返回。 void reorder(node **head, int m) { // Check param. if (head == NULL || *head == NULL ||... 阅读全文
posted @ 2012-09-13 22:58 紫红的泪 阅读(299) 评论(0) 推荐(0) 编辑
摘要: 这个最简单了,就是用一个最大值栈和一个最小值栈来维护最值信息。 template<typename T> class stack_ext : public stack<T> { public: void push(const typename stack<T>::value_type &t) { if (... 阅读全文
posted @ 2012-09-12 10:45 紫红的泪 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 实现一个最值队列,要求取最大值、最小值的时间复杂度为O(1)。以前实现最值栈比较多,又因为一个队列可以用两个栈实现,所以最传统的做法是用最值栈实现最值队列。这里用deque实现最值队列,简单高效。 template<typename T> class queue_ext : public queue<T> { public: void pu... 阅读全文
posted @ 2012-09-11 22:40 紫红的泪 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 哎,程序员面试就是伤神。各种奇葩的题都有,猜扑克牌算是个经典老题了。收藏一下,方便日后查看。 S先生、P先生、Q先生他们知道桌子的抽屉里有16张扑克牌:红桃A、Q、4 黑桃J、8、4、2、7、3 草花K、Q、5、4、6 方块A、5。约翰教授从这16张牌中挑出一张牌来,并把这张牌的点数告诉 P先生,把这张牌的花色告诉Q先生。这时,约翰教授问P先生和Q 先生:你们能从已知的点数或花色... 阅读全文
posted @ 2012-09-10 10:32 紫红的泪 阅读(1743) 评论(0) 推荐(1) 编辑
摘要: 题意是要求生成匹配的括号结果。假如给定n = 3,需要生成3对括号的有效组合,即"((()))", "(()())", "(())()", "()(())", "()()()"。 void unguarded_generate(vector<string> &result, string curr, int m, int n) { if (m == 0... 阅读全文
posted @ 2012-09-09 13:59 紫红的泪 阅读(3608) 评论(0) 推荐(0) 编辑
摘要: 题意是给一个未排序的数组,可能包含正数、负数、0。求第一个未出现的正数,例如[1, 2, 0],由于第一个未出现的正数是3,返回3;[3, 4, -1, 1]第一个未出现的正数是2,返回2。算法要求O(n)时间复杂度及常数空间复杂度。 // Stable unguarded_partition, always put t to the left side. // I... 阅读全文
posted @ 2012-09-09 13:21 紫红的泪 阅读(1953) 评论(0) 推荐(0) 编辑
摘要: 题意是求俩字符串的编辑距离,编辑定义有三种1、插入字符 2、删除字符 3、替换字符。 int minDistance(string word1, string word2) { if (word1.size() == 0) return (int)word2.size(); if (word2.size() == 0) return (... 阅读全文
posted @ 2012-09-09 10:59 紫红的泪 阅读(590) 评论(0) 推荐(0) 编辑
摘要: 题意是计算a/b,其中a、b均为int,结果也要int。但是计算不允许使用乘法、除法、取模运算。 class Solution { public: // Divide two unsigned int once, using binary divide method. unsigned int unsigned_divide_on... 阅读全文
posted @ 2012-09-08 16:20 紫红的泪 阅读(1907) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 10 下一页