leetcode
文章平均质量分 71
今朝一九九三
这个作者很懒,什么都没留下…
展开
-
leetcode:树
104原创 2016-02-27 19:31:01 · 883 阅读 · 0 评论 -
leetcode:线性表、哈希表
1 尼姆游戏(Nim Game)若石头总个数n是4的倍数,则后手有必胜法:即每次拿完,让剩余石头数保持为4的倍数。 若n不是4的倍数,则先手就有必胜法了。2原创 2016-02-27 19:34:14 · 914 阅读 · 0 评论 -
leetcode:杂项、矩阵、二分查找等
292 尼姆游戏(Nim Game)思路:若石头总个数n是4的倍数,则后手有必胜法:即每次拿完,让剩余石头数保持为4的倍数。 若n不是4的倍数,则先手就有必胜法了。 return n%4 != 0;258 各位数相加(Add Digits)将一个整数的各位数相加,再将相加结果的各位数相加……直到相加结果是个位数结束。求该个位数。 例:456->4+5+6=15原创 2016-02-27 19:33:41 · 1024 阅读 · 0 评论 -
leetcode:贪心、动态规划、记忆化搜索
动态规划是利用存储历史信息使得未来需要历史信息时不需要重新计 算, 从而达到降低时间复杂度, 用空间复杂度换取时间复杂度目的的方法。可以把动态规划分为以下几步: 确定递推量。 这一步需要确定递推过程中要保留的历史信息数量和具体含义, 同时也会定下动态规划的维度; 推导递推式。 根据确定的递推量, 得到如何利用存储的历史信息在有效时间(通常是常量或者线性时间)内得到当前的信息结果; 计算初始条件原创 2016-03-13 17:49:42 · 2409 阅读 · 0 评论 -
补充:剑指offer等
包含min函数的栈题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。 思路: 仅仅只添加一个成员变量存放最小元素(或最小元素的位置)是不够的。我们需要一个辅助栈,用来存放每次栈操作时(包括入栈和出栈)栈中最小元素。每次push一个新元素的时候,同时将最小元素push到辅助栈中(如果最小元素没有变化,就把它本身push原创 2017-02-18 21:13:24 · 450 阅读 · 0 评论 -
leetcode:编程技巧
判断两个浮点数a和b是否相等,不要用a==b,应该判断两者之差的绝对值fabs(a-b)<1e-9,即是否小于一个阈值。判断一个整数是否是为奇数,用 x % 2 != 0,不要用 x % 2 == 1,因为 x 可能是负数。STL使用技巧vector 和 string 优先于动态分配的数组 首先,在性能上, vector 的性能跟原始数组相当; 再次,声明多维数组的话,用vector的话原创 2016-01-22 12:19:13 · 624 阅读 · 0 评论 -
leetcode:深度优先搜索(DFS)和广度优先搜索(BFS)
51 N皇后问题原创 2016-03-09 16:35:26 · 2591 阅读 · 0 评论 -
leetcode:字符串
242 判断两个字符串是否是颠倒关系思路:先将两个字符串排序,然后进行比较。 bool isAnagram(string s, string t) { sort(s.begin(), s.end()); sort(t.begin(), t.end()); return s == t; }注意,这里使用了STL的sort()函数。原创 2016-02-27 19:35:02 · 626 阅读 · 0 评论 -
leetcode:图
207. 课程表排序给定一些课程,以及两两课程的前后顺序,判断能否修完所有的课。 思路: 很经典的拓扑排序问题。直接上代码:public class Solution { public boolean canFinish(int numCourses, int[][] prerequisites) { int edge=prerequisites.length;原创 2016-11-19 21:23:16 · 368 阅读 · 0 评论 -
leetcode:使用STL:基于红黑树的TreeSet
352. 数据流的不相交区间给定一个数据流,输入一组非负整数a1, a2, …, an, …, 对截止到当前的不相交区间进行汇总。 思路: 利用TreeSet数据结构,将不相交区间Interval存储在TreeSet中。TreeSet底层使用红黑树实现,可以用log(n)的代价实现元素查找。每次执行addNum操作时,利用TreeSet找出插入元素val的左近邻元素floor(start值不大于原创 2016-11-15 14:26:31 · 1217 阅读 · 0 评论 -
字符串解码讨论
01背包和完全背包使用一维数组的版本: 01背包:int main() { int n,m; while(cin>>n>>m) { vector<int> weight(n+1,0);//物品的重量 vector<int> value(n+1,0);//物品的价值 vector<int> dp(m+1,0);//一维数组,存放用n个产原创 2017-09-10 17:24:14 · 555 阅读 · 0 评论