随笔分类 -  题库Leetcode

https://leetcode.com/problemset/algorithms/
摘要:Given 1->2->3->4->5->NULL, return 1->3->5->2->4->NULL. 就是将序号为单数的放在前面,而序号为偶数的放在后面 我的方法是讲序号为偶数的的插入到链表末尾。 1 /** 2 * Definition for singly-linked list. 3 阅读全文
posted @ 2016-02-24 10:28 Breeze0806 阅读(140) 评论(0) 推荐(0)
摘要:将单向链表反转完成如图操作,依次进行即可123 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListN... 阅读全文
posted @ 2016-01-25 22:40 Breeze0806 阅读(176) 评论(0) 推荐(0)
摘要:题意:将罗马数字1到3999转化成自然数字,这里用了STL库map将罗马字符映射到自然数字。I,V,X,L,C,D,M -> 1,5,10,50,100,500,1000m[s[i]] m; 4 Solution(){ 5 const int N = 7; 6 ... 阅读全文
posted @ 2016-01-25 22:17 Breeze0806 阅读(168) 评论(0) 推荐(0)
摘要:给定一个二叉搜索树的两个节点,找出他们的最近公共祖先,如, _______6______ / \ ___2__ ___8__ / \ / \ 0 4 7 9 / \ 3 52和8的最近公共祖先是6,2和4的最近公共祖先是2,假设找的3和5 TreeNode* l =lowestCommonAnces 阅读全文
posted @ 2016-01-24 23:13 Breeze0806 阅读(234) 评论(0) 推荐(0)
摘要:对于N-Queens的每种情况,回答出每种情况的N-Queens的排列数。 l,r和c是每种类型的格子是否有棋子。 l判断的是这样的对角线的格子 r判断的是这样的对角线的格子 c 判断的是这样的竖线格子 枚举每行放一颗棋子,判断是否与前面冲突,如果不冲突一直到底就让答案+1 这种搜索也可以参考DFS 阅读全文
posted @ 2016-01-24 22:42 Breeze0806 阅读(455) 评论(0) 推荐(0)
摘要:二叉树的中序遍历,即左子树,根, 右子树 1 /** 2 * Definition for binary tree 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int 阅读全文
posted @ 2016-01-24 21:36 Breeze0806 阅读(143) 评论(0) 推荐(0)
摘要:二叉树的基础操作:二叉树的先序遍历(详细请看数据结构和算法,任意本书都有介绍),即根,左子树,右子树,实现方法中还有用栈实现的,这里不介绍了 1 /** 2 * Definition for binary tree 3 * struct TreeNode { 4 * int val; ... 阅读全文
posted @ 2016-01-24 21:33 Breeze0806 阅读(171) 评论(0) 推荐(0)
摘要:统计一个值的二进制1的个数,用与(&)和向左移位(>1){ 6 ans += n&1; 7 } 8 return ans; 9 }10 };解法二: 1 class Solution { 2 public: 3 int hamm... 阅读全文
posted @ 2016-01-24 21:25 Breeze0806 阅读(162) 评论(0) 推荐(0)
摘要:题意:先将0, 1, 2, ..., n放入数组,然后去掉其中一个值,找到那个值。这题与singe number 是一个类型,变形的地方就是首先需要将0, 1, 2, ..., n再次放入这个数组,这样就和singe number 一样。 1 class Solution { 2 public: 3... 阅读全文
posted @ 2016-01-24 21:02 Breeze0806 阅读(198) 评论(0) 推荐(0)
摘要:先介绍下本题的题意:在一个字符串组成的数组words中,找出max{Length(words[i]) * Length(words[j])},其中words[i]和words[j]中没有相同的字母,在这里字符串由小写字母a-z组成的。对于这道题目我们统计下words[i]的小写字母a-z是否存在,然... 阅读全文
posted @ 2016-01-24 20:49 Breeze0806 阅读(383) 评论(0) 推荐(1)
摘要:字符串s和字符串t是否异构,就是统计两个字符串的a-z的字符数量是否一值 1 class Solution { 2 public: 3 4 bool isAnagram(string s, string t) { 5 int flgs[26] = {0};//统计s a-z... 阅读全文
posted @ 2016-01-17 21:57 Breeze0806 阅读(176) 评论(0) 推荐(0)
摘要:在一个长度为n的数组中找出出现次数超过(n+1)/2次的数 说明请参考编程之美中的2.3 class Solution { public: int majorityElement(vector<int>& nums) { int candidate; int ntimes,i; for(ntimes 阅读全文
posted @ 2016-01-16 21:05 Breeze0806 阅读(339) 评论(0) 推荐(0)
摘要:有n盏关着的灯,第k轮把序号为k倍数的关着的灯打开,开着的灯关闭。class Solution {public: int bulbSwitch(int n) { return (int)sqrt(n*1.0); }}; 阅读全文
posted @ 2016-01-16 20:59 Breeze0806 阅读(214) 评论(2) 推荐(0)
摘要:用一个数组表示股票每天的价格,数组的第i个数表示股票在第i天的价格。交易次数不限,但一次只能交易一支股票,也就是说手上最多只能持有一支股票,求最大收益。 关键:能赚就赚 1 class Solution { 2 public: 3 int maxProfit(vector<int>& prices) 阅读全文
posted @ 2016-01-16 20:35 Breeze0806 阅读(134) 评论(0) 推荐(0)
摘要:找出数组中重复的数,裸的map和set题 1 class Solution { 2 public: 3 bool containsDuplicate(vector<int>& nums) { 4 map<int,int> mii; 5 for (int i = 0;i<nums.size() ;++ 阅读全文
posted @ 2016-01-16 20:23 Breeze0806 阅读(148) 评论(0) 推荐(0)
摘要:本质是把26进制转化为10进制 A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 1 class Solution { 2 public: 3 int titleToNumber(string s... 阅读全文
posted @ 2016-01-16 20:13 Breeze0806 阅读(156) 评论(0) 推荐(0)
摘要:计算二叉树的最大深度 我的方法是找出两个子树的长度中最长的那个,然后加1 1 class Solution { 2 public: 3 int maxDepth(TreeNode* root) { 4 if(!root) return 0; 5 else return max(maxDepth(ro 阅读全文
posted @ 2016-01-16 20:07 Breeze0806 阅读(125) 评论(0) 推荐(0)
摘要:在一个数组中找出两个不同的仅出现一次的数(其他数字出现两次)同样用亦或来解决(参考编程之美的1.5)先去取出总亦或值然后分类,在最后一位出现1的数位上分类成 ans[0]和ans[1]a&(-a)就是计算出这个数,可以参考树状数组。最后就是注意(nums[i] & a) == 0要加()。注意符号运... 阅读全文
posted @ 2016-01-16 20:02 Breeze0806 阅读(169) 评论(0) 推荐(0)
摘要:就是判断两棵树的值和结构是否相同注意:要判断是否所有的树节点是否为NULL 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; ... 阅读全文
posted @ 2016-01-16 18:51 Breeze0806 阅读(158) 评论(0) 推荐(0)
摘要:给出一个数组 nums[i](i = 0,1,...,n-1) 输出数组output[i]满足output[i] =nums[0] * num[1] * num[2] *..*num[i-1] * num[i+1]*... *num[n-1]要求不能使用除了output之外的大内存,满足时间复杂度O... 阅读全文
posted @ 2016-01-16 18:32 Breeze0806 阅读(507) 评论(0) 推荐(0)