- 博客(16)
- 资源 (12)
- 收藏
- 关注
原创 数据流中的中位数
数据流中的中位数 参与人数:1245时间限制:1秒空间限制:32768K 算法知识视频讲解 题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 解题思路:维护一个大堆和一个小堆,大堆表示序列前一半数,小堆表示序列后一半
2016-06-27 14:40:16 882
原创 166. Fraction to Recurring Decimal
今天华为出了这么一道面试题,当时我一紧张,没写出来。。。关键是记录循环小数,采用map结构。 注意leetcode上这道题要防止溢出。将int 转换为long。一般来说int为4个字节,如果long也为4个字节的话,这样转换还是不成功的,由此我推断leetcode系统的编译器应该是64位的,这样long是8个字节,这样就避免了溢出。 class Solution { public:
2016-06-24 14:29:25 419
原创 328. Odd Even Linked List
解题思路:画图分析 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: L
2016-06-21 16:53:00 360
原创 Swap Nodes in Pairs
解题思路:在纸上画图理解 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: L
2016-06-21 16:10:15 362
原创 Kth Smallest Element in a BST
解题思路:中序遍历,计数统计第K个值 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NUL
2016-06-19 15:25:26 432
原创 Copy List with Random Pointer
解题思路:使用map存储原来链表和新链表的节点之间的映射关系。 /** * Definition for singly-linked list with a random pointer. * struct RandomListNode { * int label; * RandomListNode *next, *random; * RandomLis
2016-06-18 21:24:11 467
原创 Divide Two Integers
解题思路:使用位操作 class Solution { public: int divide(int dividend, int divisor) { if(divisor == 1) return dividend; if(dividend == INT_MIN && abs(divisor) == 1) retur
2016-06-18 16:02:51 386
原创 Combination Sum II
解题思路:回溯法 如何避免重复。如果两个数相同,我们先用前一个数,只有当前一个数用了,这个数才能使用。 例如:1 1。 当我们要使用第二个1时,我们要检查他的前面一个1是否使用了,当未被使用时第二个1就不能使用。 class Solution { public: void compute_sum(vector>& result,vector flag,vector
2016-06-16 22:41:25 365
原创 Combination Sum
解题思路:回溯法 class Solution { public: void do_sum(vector>& result, int cur,int level, int target, vector& candidates, vector& tmp){ if (cur == target) { result.push_back(tmp); return; } if
2016-06-16 21:12:07 360
原创 Permutations II
class Solution { public: vector> result; void search(vector& nums,vector flag,vector& vec){ if(vec.size()==nums.size()) { result.push_back(vec);
2016-06-16 17:06:30 468
原创 N-Queens II
N 皇后问题。典型的回溯解法。通过维持一个全局数组来记录当前尝试的皇后所在的列和两个对角线是否已经存在其他皇后。注意主对角线标识y-x可能为负,存取时需要加上n. 我们可以通过坐标(x,y)的值来表示对角线。x+y的值标识副对角线,y-x的值标识主对角线。 class Solution { public: void search(int cur,int n,vector>&
2016-06-15 20:49:47 417
原创 堆排序总结
在面试中遇到要你手写堆排序,可以先询问是否可以使用STL中建堆的算法,问清楚面试官的意图之后方可动手写代码,交流最重要。 heap并不属于STL组件,是一个幕后英雄,STL实现了最大堆,并用来作为priority queue的底层机制。 stl中的堆默认是最大堆,要想用最小堆的话,必须要在push_heap,pop_heap,make_heap等每一个函数后面加第三个参数greater(),括
2016-06-14 20:14:00 1148
原创 最长连续递增子序列
解题思路: 遍历一遍,保存一个全局的最大长度,复杂度为O(n) #include #include using namespace std; int longest_subarray(vector data){ int current = 1; int size = data.size(); int res = 1; for (int i = 1; i < size; i++) {
2016-06-14 09:45:38 2082 1
原创 链表中倒数第K个节点
解决思路:遍历一遍,获取链表长度,然后再遍历一遍,找到第len-k个节点即为倒数第K个节点/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution
2016-06-12 12:57:12 616
原创 找出字符串
有一个排过序的字符串数组,但是其中有插入了一些空字符串,请设计一个算法,找出给定字符串的位置。算法的查找部分的复杂度应该为log级别。 给定一个string数组str,同时给定数组大小n和需要查找的string x,请返回该串的位置(位置从零开始)。 测试样例: ["a","b","","c","","d"],6,"c" 返回:3 解题思路:二分法。如果mid为空字符串,
2016-06-08 13:36:59 782
原创 extern "C" 实现C++ 与 C的混合编程
extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的;其次,被它修饰的目标是“C”的。 1,被extern "C"限定的函数或变量是extern类型的:这说明该变量的范围是全局的,不局限于本源文件,可以被其他模块引用。注意与static 进行对比,static 修饰变量或者函数使得该变量或者函数的范围局限在该源文件。 2,被ext
2016-06-05 13:53:05 535
OPENNI2 Kinect.dll
2014-08-25
用Myeclipse开发JSP教程 包括环境配置 部署tomcat 等等
2012-08-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人