自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(92)
  • 收藏
  • 关注

转载 我的2018校招结束啦

经过平时的积累+用心的准备,拿到了远景能源(大数据部门,算法)、美团点评(餐饮平台,后台开发)、华为(云核心网,软件研发)、网易(考拉海购,算法)的OFFER。都是SP。最终决定去网易啦 :)后面的计划,自然就是努力做科研&准备毕业,欢迎坐标杭州or即将坐标杭州+有志于从事算法的朋友交gou流da呀:)ps. 2017.11.5 收到了滴滴(大数据部门,算法)的offe...

2017-10-15 20:42:00 147

转载 [剑指offer] 二叉搜索树的第k个节点

// 思路是中序遍历很容易想到,但是一次做到bug free不容易。​// 关键是正确更新计数变量的方法。​class Solution {public: TreeNode* KthNode(TreeNode* pRoot, int k) { int cnt = 0; return DFS(pRoot, k, cnt); }pri...

2017-09-25 21:27:00 131

转载 二叉树的序列化和反序列化

/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = t...

2017-09-25 20:22:00 143

转载 二叉树层序遍历 | 按之字形打印二叉树

按层打印宽度优先搜索。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solutio...

2017-09-25 11:20:00 194

转载 对称二叉树

递归写法:class Solution {public: bool isSymmetrical(TreeNode* pRoot) { if (pRoot == NULL) { return true; } return IsSymmetrical(pRoot->left, pRoot->rig...

2017-09-25 10:32:00 118

转载 [剑指offer] 二叉树的下一个节点

不容易一次写对的题,对指针的操作要细心。/*struct TreeLinkNode { int val; struct TreeLinkNode *left; struct TreeLinkNode *right; struct TreeLinkNode *next; TreeLinkNode(int x) :val(x), left(NULL...

2017-09-24 22:38:00 104

转载 [LintCode] Maximum Subarray Difference | 双向遍历找子数组差的绝对值的最大值

http://www.lintcode.com/zh-cn/problem/maximum-subarray-difference/#这个问题和最大化两个不重叠子数组和类似,即还是想办法求得区间[0...i]和[i+1...n-1]的最大/小连续子数组和,只是不同的是要最大化相减的绝对值。那么就对两个区间都分别预处理好最大值和最小值,答案一定是其中一个的最大值与另一个的最小值之差。i...

2017-09-14 09:46:00 134

转载 [LintCode] Maximum Subarray II

http://www.lintcode.com/zh-cn/problem/maximum-subarray-ii/#对所有的i,分别计算区间[0...i]和[i+1...n-1]的最大值,取相加最大的。不要同时计算,分别预处理好是O(n)。int maxTwoSubArrays(vector<int> &nums) { if (nums.empty())...

2017-09-12 22:35:00 177

转载 [LintCode] Find the Missing Number

http://www.lintcode.com/zh-cn/problem/find-the-missing-number/#先做一轮桶排序,把每个元素放在它应该在的位置上(只要nums[i] != i并且nums[i] < n,就执行交换:swap(nums[i], nums[nums[i]]),注意nums[i] < n的条件不能漏掉,否则交换会导致数组越界访问);然后...

2017-09-12 21:00:00 110

转载 [LintCode] Simplify Path

主要须要解决的问题是字符串分割。直接的做法是定位/之间的字符串或者自己编写split函数,并根据要求解析。简洁的做法是使用stringstream做字符串分割。写法1:直接双指针循环定位string simplifyPath(string &path) { if (path.empty()) return path; vector<string...

2017-09-11 22:07:00 114

转载 剑指offer题解

目录 1. 赋值运算符函数 2. 实现Singleton模式 3. 二维数组中的查找 4. 替换空格 5. 从尾到头打印链表 6. 重建二叉树 7. 用两个栈实现队列 8. 旋转数组的最小数字 9. 斐波那契...

2017-08-15 20:20:00 323

转载 [LeetCode] Find Median from Data Stream | 动态计算数据流的中位数

https://leetcode.com/problems/find-median-from-data-stream/#/description维护两个堆,一个最小堆,用于存比中位数大的数;一个最大堆,用于存比中位数小的数。关键在于使得两个堆的大小之差不超过1。class MedianFinder {public: /** initialize your data stru...

2017-06-19 20:39:00 166

转载 [hihoCoder] 任务分配

http://hihocoder.com/contest/hiho155/problem/1思路:贪心。按时间先后顺序挨个处理任务,如果不用增加机器(当前开了的机器中有空闲的),就选出一个空闲的机器并更新该机器下一个空闲时刻;否则开一台新的机器。算法:开一个multiset,维护当前所有机器空闲的时刻对所有任务按开始时间从小到大排序,遍历任务:在multiset中找是否有小于...

2017-06-18 10:21:00 123

转载 美团点评CodeM资格赛部分问题题解

优惠券注意的点是任何时刻一张优惠券只能存在一个,如果同一张优惠券还没被使用又购入,就看上一次购入与该次购入之间有没有问号可以替代使用,使用优惠券同理。#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <stri...

2017-06-17 22:58:00 191

转载 [LeetCode] LRU Cache

https://leetcode.com/problems/lru-cache/#/description很重要的练习题。双端链表+哈希表。关键的操作是从链表中取出一个节点再放入链表尾部。class LRUCache {public: // @param capacity, an integer LRUCache(int capacity) { t...

2017-06-14 23:30:00 105

转载 [LeetCode] Longest Consecutive Sequence | O(n)找最长连续序列

https://leetcode.com/problems/longest-consecutive-sequence/这个问题做到O(n)还是需要动一番脑筋。注意:不是找最长递增子序列。思路:注意到每个元素必属于一个连续递增序列,而且不会出现重复,有点并查集的感觉。所以我们只要找到每个元素所属的连续序列,取最长的即可。由于有的元素属于同一个连续序列,考察完一个连续序列后把其中所有的元...

2017-06-14 22:08:00 100

转载 [LeetCode] Find All Duplicates in an Array

https://leetcode.com/problems/find-all-duplicates-in-an-array/#/description像这种数组元素大小能够被bound且和数组size扯上关系,要条件反射想到类似bucket的做法。类似的题:leetcode 41 first missing positiveleetcode 287 find the duplic...

2017-06-14 17:05:00 104

转载 [LeetCode] Encode and Decode Tiny URL | 短网址算法

https://leetcode.com/problems/encode-and-decode-tinyurl一种做法是对于每一个请求的longURL,从0开始按递增的顺序用一个整数与之对应,这个整数就是对longURL的编码,同时做为索引;对短网址解码时,解析出短网址中的整数信息,查找原来的长网址即可。class Solution {public: // Encodes ...

2017-06-14 16:03:00 370

转载 [LeetCode] Largest Rectangle in Histogram | 直方图最大矩形覆盖

https://leetcode.com/problems/largest-rectangle-in-histogram/#/description再次做,还是没能第一时间写出bug-free的最佳解法。这是一道很好的题,暴力/DP做是O(n^2),分治(以最矮的矩形为分界点)做是O(nlogn),单调栈则可以神奇地做到平摊O(n)。总之要记住这个技巧,在需要找一个元素左、右边第一...

2017-06-14 12:55:00 117

转载 用两个栈实现队列

每次push,都push到stack1每次pop,如果stack2为空,就把stack1中的所有元素“倒入”stack2,这样就使得最先进入stack1的元素又回到了栈顶class MyQueue {public: stack<int> stack1; stack<int> stack2; MyQueue() { ...

2017-06-13 00:24:00 83

转载 [hihoCoder] 穿越禁区 | 隐式图两点可达性判断

http://hihocoder.com/problemset/problem/1307首先,如果左、右边界被圆分离开,就意味着无法穿越雷区。把上、下边界以及N个圆抽象成N+2个图节点,当边界与圆或圆与圆之间相交时表示它们连通,问题就转变为判断从上边界到下边界是否存在路径。建图后从上边界跑一遍DFS即可。#include <iostream>#include <...

2017-06-12 10:39:00 113

转载 [LeetCode] First Missing Positive | 找数组中第一个没有出现的正整数

https://leetcode.com/problems/first-missing-positive/#/description找到一个解法并不难,困难的是如何做到不用额外空间并且O(n)时间。根据要求来推算法的话,基本上就只能想办法利用问题本身的性质了。时间O(n)额外空间O(1)的算法一定是线性扫描,诸如线型DP, 快慢指针,bucket等等。对于本问题,一个完美的数组应该长...

2017-06-11 10:32:00 124

转载 将数组重新排序以构造最小值

http://www.lintcode.com/zh-cn/problem/reorder-array-to-construct-the-minimum-number/暴力枚举是肯定不可行的,那样复杂度太高(阶乘级)。仔细想想,最优解中两个数字m和n是什么样?一定是mn拼接和nm拼接较小的那个所对应的顺序(如果不是这样的话,我们总能将m和n交换从而得到更好的组合),其他两两组合同理,于...

2017-06-10 23:21:00 147

转载 [剑指offer] 用递归打印数字

http://www.lintcode.com/zh-cn/problem/print-numbers-by-recursion/做法类似于打印全排列,走一遍全排列的枚举树,从最高位开始一位一位地遍历,直到最低位形成一个数字,每一位都有0~9(十叉树)。class Solution {public: /** * @param n: An integer. ...

2017-06-09 22:02:00 97

转载 [剑指offer] 赋值运算符重载

http://www.lintcode.com/zh-cn/problem/assignment-operator-overloading-c-only/#还是有很多点需要注意的。判断this与传入的object是否是同一个对象,相同的话直接返回*this就可以了。判断传入对象的数组是否为空,空的话就不必复制,直接释放内存并将指针置NULL即可。考虑异常安全。因为new cha...

2017-06-05 23:35:00 123

转载 [hihoCoder] 股票价格

http://hihocoder.com/contest/hiho153/problem/1时间限制: 20000ms单点时限: 2000ms内存限制: 256MB描述小Hi最近在分析一支股票的价格走势,他需要一个程序来辅助分析。这个程序会接收3种消息(指令):价格信息,格式是P timestamp price:表示这支股票在 timestamp 时刻价格是 price。删...

2017-06-05 09:40:00 130

转载 [LintCode] Kth Smallest Number in Sorted Matrix

一个行和列都有序的矩阵,找出其中第k小的元素。问题链接: http://www.lintcode.com/en/problem/kth-smallest-number-in-sorted-matrix/Brute Force最暴力的方式是把矩阵里所有元素存到一个数组里,然后对数组排序后输出第k个元素。复杂度O(N + Nlog(N))(其中N是矩阵所有元素个数)。C++代码:cl...

2017-06-04 15:33:00 142

转载 [LeetCode] Subarray Sum Equals K | 前缀和+哈希表

https://leetcode.com/problems/subarray-sum-equals-k/#/description要求是找数组中满足sum[i...j] = k的子数组数量,其中i <= j且sum[i...j]表示连续子数组nums[i...j]的和。用prefix_sum[i]表示前缀和sum[0...i],那么sum[i...j] = prefix_sum...

2017-06-03 16:13:00 125

转载 [LeetCode] Add and Search Word - Data structure design | 带通配符的前缀树搜索

https://leetcode.com/problems/add-and-search-word-data-structure-design/#/descriptionPrefix Tree的构建和查找。插入单词的时候,挨个字符插入即可,记得最后做个标记(表示到这里是一个完整的单词)查找某个单词,由于有通配符.的存在,稍微麻烦一些。没碰到.时,按照前缀树的一般查找方法挨个往下查...

2017-06-02 15:41:00 158

转载 [LeetCode] Implement Trie

https://leetcode.com/problems/implement-trie-prefix-tree/#/description实现前缀树。class TrieNode {public: bool is_word; TrieNode* next[26]; TrieNode() : is_word{false} { for (int...

2017-06-02 15:40:00 70

转载 [LeetCode] Binary Search Tree Iterator | 二叉查找树迭代器

https://leetcode.com/problems/binary-search-tree-iterator/#/description难点在于对中间状态的维护。用类似于中序遍历的方法。/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * ...

2017-06-01 16:18:00 88

转载 只用递归翻转栈

先说句题外话,用递归实现栈的翻转纯粹就是用来练习的,递归做的效率显然不是最好的。面试喜欢问这个问题目的也就是考察对递归的理解。另外,不可能不用额外空间。递归就需要压栈,压栈就需要空间。做法:取出栈顶翻转栈把第1步取出的元素放到栈底其中2,3两步就可以用递归做。参考程序(可编译):#include <iostream>#include <stack&...

2017-05-24 22:15:00 117

转载 [LeetCode] Wiggle Sort II | 摆动排序

https://leetcode.com/problems/wiggle-sort-ii/#/description一开始想的方法是把数组复制一份,然后按最小、最大、最小...依次放数字,结果WA,错误代码:class Solution {public: void wiggleSort(vector<int>& nums) { int n...

2017-05-24 22:10:00 137

转载 今天回归刷题的日子

之前72天跑去做CodeCraft2017比赛了,在神队友的牵引下再次一路走到总决赛,完成了一段短暂而难忘的旅程——一场比赛,宛如一场恋爱。从最初的怦然心动,到前期的激动人心、全情投入,到后期的苦心经营、妥协相让,亦或精疲力竭、累觉不爱,直到最终分道扬镳或修成正果,挥之不去的总是那刻骨铭心,和往事难忘。嘛,总之,终于又回到求职和科研的生活啦。求职的基本方向定在算法/C++/Py...

2017-05-19 11:03:00 90

转载 [LeetCode] Count of Range Sum | 区间和统计

https://leetcode.com/problems/count-of-range-sum/#/description带条件约束的统计。结果 = 二分后左边的统计 + 右边的统计 + 横跨中间的,难点在于横跨中间的计算。这个问题和“数组中的逆序对”类似,只不过对统计的条件要求更一般化,前者可以用线段树、树状数组、归并排序(排序的目的是为了加速“横跨中间的统计”的计算速度),本问...

2017-05-19 10:53:00 250

转载 [LeetCode] Count of Smaller Numbers After Self

https://leetcode.com/problems/count-of-smaller-numbers-after-self/#/description解法1:暴力class Solution {public: vector<int> countSmaller(vector<int>& nums) { if (nums....

2017-05-19 10:51:00 83

转载 [LeetCode] Reverse Pairs | 归并排序找逆序对

https://leetcode.com/problems/reverse-pairs/#/description和315, 327是一类题。分治法,合并的过程就是归并排序,在归并的过程中,对右半边,统计满足nums[j] < nums[i] / 2的元素的个数即可。class Solution {public: int reversePairs(vector&lt...

2017-05-19 10:49:00 223

转载 [hihoCoder] 买零食

http://hihocoder.com/contest/hiho139/problem/1?sid=992251描述小Ho很喜欢在课间去小卖部买零食。然而不幸的是,这个学期他又有在一教的课,而一教的小卖部姐姐以冷若冰霜著称。第一次去一教小卖部买零食的时候,小Ho由于不懂事买了好一大堆东西,被小卖部姐姐给了一个“冷若冰霜”的眼神,食欲都下降了很多。从那以后,小Ho就学乖了,去小卖部...

2017-03-01 20:52:00 193

转载 [LeetCode] Kth Largest in an Array | 数组第K大元素

leetcode 215. kth largest in an arrayhttps://leetcode.com/problems/kth-largest-element-in-an-array/?tab=Description方法1:直接按从大到小排序,返回第k个。Time: O(n logn)Extra space: O(1)int findKthLargest(vect...

2017-03-01 11:17:00 92

转载 [LeetCode] Sort Characters by Frequency

https://leetcode.com/problems/sort-characters-by-frequency/?tab=Description思路1: Priority Queue先把所有字符的出现次数统计一下----O(n)然后把 (字符, 出现次数) 做成一个node推入优先队列,按题目要求重载比较规则----O(n log n)最后依次pop队列元素,构造结果--...

2017-03-01 00:04:00 76

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除