- 博客(90)
- 资源 (7)
- 收藏
- 关注
原创 LeetCode(113) Path Sum II
深度搜索,变长跟踪路径数组,保护现场代码如下:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(N
2015-07-29 17:47:12 257
原创 LeetCode(120) Triangle
动态规划,二维表格class Solution {public: int minimumTotal(vector<vector<int>>& triangle) { int height = triangle.size(); vector<vector<int>> matrix(height, vector<int>(height, 0)); f
2015-07-29 16:34:04 270
原创 LeetCode(78) Subsets
在主函数中多次调用LeetCode(77) Combinations函数即可,本题没有多大研究意义。代码如下:class Solution {public: void dfs(vector<int> &nums, int index, int depth, int k, vector<int> &tmpVectorint, vector<vector<int>> &result) {
2015-07-29 14:51:30 265
原创 LeetCode(77) Combinations
哎,花了这么长时间,竟然是因为reverse函数掌握不够透彻,他改变了操作数,我竟然全然没想注意到这一变化。哎╮(╯▽╰)╭。代码如下:class Solution {public: void dfs(vector<int> &nums, int index, int depth, int k, vector<int> &tmpVectorint, vector<vector<int>>
2015-07-29 13:07:20 417
原创 LeetCode(75) Sort Colors
参考Life In Code 和计数排序一样,排序高效的原因是并没有模拟现实生活中的搬移,而是进行信息的搬移。代码如下:class Solution {public: void sortColors(vector<int>& nums) { int zeroPos = -1; int onePos = -1; int twoPos = -1;
2015-07-29 10:31:38 300
原创 LeetCode(213) House Robber II
增加主调函数,并调用House Robber代码。代码如下class Solution {public: int dp(vector<int>& nums) { int hasFinal, exceptFinal; if(nums.size() == 0) return 0; if(nums.size() == 1)
2015-07-28 20:05:48 307
原创 LeetCode(91) Decode Ways
动态规划class Solution {public: int numDecodings(string s) { if(s.size() == 0) return 0; int length = s.size(); int *arr = new int[length]; int index = length -
2015-07-28 17:51:23 305
原创 LeetCode(74) Search a 2D Matrix
二分查找算法的核心思想是不断缩减寻找的范围,以判断在哪里或者存在不存在。更具体的说,一般我选用开区间,即左开右开,不断缩小开区间的长度。class Solution {public: bool searchMatrix(vector<vector<int>>& matrix, int target) { int rowNumber = matrix.size();
2015-07-28 11:39:14 373
原创 LeetCode(73) Set Matrix Zeroes
将一些信息记录下来,最后根据这些信息执行一系列改变实体的操作class Solution {public: void setZeroes(vector<vector<int>>& matrix) { int rowNumber = matrix.size(); int columnNumber = matrix[0].size(); int ze
2015-07-28 09:38:41 292
原创 LeetCode(71) Simplify Path
有解释的代码如下:class Solution {public: string simplifyPath(string path) { int length = path.size(); //处理长度为1的特例 if(1 == length) return path; //预处理算法设计技术:将不符合要求的输入
2015-07-27 11:01:57 378
原创 LeetCode(150) Evaluate Reverse Polish Notation
栈class Solution {public: int evalRPN(vector<string>& tokens) { stack<string> stringStack; int xiaoshu; int dashu; for(int i = 0; i < tokens.size(); i++) {
2015-07-26 20:41:19 204
原创 LeetCode(94) Binary Tree Inorder Traversal
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class
2015-07-26 19:58:47 286
原创 LeetCode(144) Binary Tree Preorder Traversal
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class
2015-07-26 19:40:38 271
原创 LeetCode(69) Sqrt(x)
class Solution {public: int mySqrt(int x) { if(x <= 0) return 0; long long left = 1; long long right = x; while(left <= right) { long long mid =
2015-07-26 19:16:38 270
转载 2014年计算机求职总结--准备篇
转载自WalkingInTheWind 版权所有,转载请注明出处,谢谢! http://blog.csdn.net/walkinginthewind/article/details/13000431 找工作是一个长期准备的过程,突击是没什么效果的。准备时间越长,准备就越充分,就越容易拿到好的offer。我基本上从研究生一入学就一直在准备找工作的东西,看书、研究研究笔试面试题、在线编程训练、参加
2015-07-26 16:53:25 401
原创 LeetCode(64) Minimum Path Sum
经典的动态规划问题,详细的分析可以见题解报告Leetcode(62)(63) Unique Paths I IIclass Solution {public: int minPathSum(vector<vector<int>>& grid) { int m = grid.size(); int n = grid[0].size(); if(1
2015-07-26 16:17:21 254
原创 Leetcode(62)(63) Unique Paths I II
经典的动态规划问题,Unique Paths I按如下方式填表,Unique Paths II稍微变化即可。Unique Paths I 代码如下class Solution {public: int uniquePaths(int m, int n) { vector<vector<int>> matrix(m, vector<int>(n)); for(in
2015-07-26 15:58:03 312
原创 LeetCode(61) Rotate List
先将单向链表转换成首尾相连的循环链表,最后再转换成单向链表。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Soluti
2015-07-26 15:10:15 281
原创 LeetCode(60) Permutation Sequence
减一法class Solution {public: int factorial(int n) { int result = 1; int i = 1; while(i <= n) result = result * (i++); return result; } void minusOneAnd
2015-07-26 12:46:02 240
原创 LeetCode(54)(59) Spiral Matrix I II
一开始我是整体思考如何打印一个环,后来继续参考这篇文章,发现可以将顺时针打印一个环分解成打印上,结束,打印右,结束,打印下,结束,打印左,结束。这些操作的分解的基础基于一个事实:每个环的开头都是matrix[cycleNumber][cycleNumber]所以在打印“右”的时候不必再考虑“上”,减少动作之间的耦合可以使得思考更加容易。代码如下:class Solution {public:
2015-07-26 10:21:18 276
原创 LeetCode(55) Jump Game
相似的题目及其题解报告class Solution {public: bool canJump(vector<int>& nums) { reverse(nums.begin(), nums.end()); int length = nums.size(); bool *arr = new bool[length]; arr[0] =
2015-07-25 20:50:01 319
原创 LeetCode(53) Maximum Subarray
class Solution {public: int maxSubArray(vector<int>& nums) { if(1 == nums.size()) return nums[0]; int length = nums.size(); int *arr = new int[length]; arr
2015-07-25 20:46:21 331
原创 LeetCode(50) Pow(x, n)
处理数值计算问题的两种方法:1、基于分治法的二进制分解的方法;2、基于减二法的二分法。参考Code Ganker。基于分治法的二进制分解的方法class Solution {public: double myPow(double x, int n) { bool isNegative = false; if(n % 2 == 1 && x < 0)
2015-07-24 15:36:39 515
原创 在什么需求下使用map这种数据结构
第一种:建立对应关系(i.e 将一个数字与一个字母对应起来)在这种需求下我们可以使用c++中的map(int, char),但在实际过程中我们更经常使用char array[] 数组,原因是更加方便更加快速对数组进行各种操作(方便是指不需要记住map的成员函数,快速是指比如建立0-25 对应 a-z,直接在数组初始化时即可,不需要一个接一个的添加pair。)第一种:对某项进行信息记录(i.e 统计某
2015-07-24 11:00:50 899
原创 LeetCode(49) Anagrams
class Solution {public: vector<string> anagrams(vector<string>& strs) { map<string, int> hash_map; vector<string> result; for(int i = 0; i < strs.size(); i++) { st
2015-07-24 10:26:26 263
原创 LeetCode(48) Rotate Image
解题的算法:先转置再对每一行反转。class Solution {public: void rotate(vector<vector<int>>& matrix) { for(int i = 0; i < matrix.size(); i++) { for(int j = i + 1; j < matrix.size(); j++) {
2015-07-23 17:17:06 254
原创 Permutations II
在LeetCode(46) Permutations的基础上删除重复的可行解。 仅仅添加了 if(i >= 1 && nums[i] == nums[i - 1]) continue;完整代码如下:class Solution {public: void dfs(vector<int> nums, vector<int> &oneResult, int dept
2015-07-23 16:14:51 240
原创 LeetCode(46) Permutations
深度优先搜索算法设计技术。class Solution {public: void dfs(vector<int> nums, vector<int> &oneResult, int depth, int &length, vector<vector<int>> &result) { if(depth == length - 1) { oneResult[
2015-07-23 15:42:38 284
原创 LeetCode(43) Multiply Strings
参考这篇文章,讲的很不错。class Solution {public: string multiply(string num1, string num2) { reverse(num1.begin(), num1.end()); reverse(num2.begin(), num2.end()); vector<int> arr(num1.si
2015-07-23 11:30:13 216
原创 在vector<int>删除一段内容
code is :#include<iostream>#include<vector>using namespace std;int main() { vector<int> nums; nums.push_back(0); nums.push_back(1); nums.push_back(2);nums.push_back(3); nums.erase(nums.begi
2015-07-23 11:00:15 902
原创 LeetCode(40) Combination Sum II
在LeetCode(39) Combination Sum代码基础上增加了一些代码。具体分析参见LeetCode(39) Combination Sumclass Solution {public: void dfsSearch(vector<int> &candidates, int serialNumber, vector<int> &combinationIndex, int dept
2015-07-22 19:13:21 282
原创 LeetCode(39) Combination Sum
将解决这个问题的整个过程记录下来: 1、首先我以[2,3,6,7,9] 9为例研究了一下可行解,在小规模情况下目测可行解为 [[9], [2,7],[3,6]],我就想如何按照某种规则来搜索出这些可行解呢,此时我想到用于找零问题的贪婪算法,将可行解集合按照贪婪算法重新整理为,[9],[7,2],[6,3]。 2、此时开始想到排列树,编程之美3.2节,发现在排列树上进行贪婪算法是可行的。3、接下
2015-07-22 17:11:47 615
原创 LeetCode(35) Search Insert Position
class Solution {public: void search(vector<int> &nums, int index1, int index2, int target, int &index, bool &doHave) { if(index1 > index2) return; if(index1 == index2) {
2015-07-22 10:33:38 278
原创 LeetCode(34) Search for a Range
二分查找算法的算法设计技术是分治法。 代码如下:class Solution {public: void search(vector<int>& nums, int index1, int index2, int target, bool &isFirst, int &start, int &end) { if(index1 > index2) retu
2015-07-22 09:55:08 262
原创 LeetCode(31) Next Permutation
第一次提交后的结果为Line 46: stray ‘\343’ in program,经过排查,原因是将半角空格打成全角空格。 代码如下:class Solution {public: void nextPermutation(vector<int>& nums) { if(nums.size() < 2) return; int par
2015-07-21 21:50:40 275
原创 LeetCode(29) Divide Two Integers
class Solution {public: int divide(int dividend, int divisor) { if(dividend == -2147483648 && divisor == -1) return 2147483647; if(dividend == 0) return 0;
2015-07-21 20:30:12 239
原创 LeetCode(24) 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: ListNode* swa
2015-07-20 22:17:47 291
原创 LeetCode(22) Generate Parentheses
class Solution {public: vector<string> generateParenthesis(int n) { int length = n * 2; vector<string> result; char hash_map[2] = {'(', ')'}; int *arr = new int[leng
2015-07-20 20:08:21 245
原创 LeetCode(18) 4Sum
仅仅是记录一下class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { sort(nums.begin(), nums.end()); vector<vector<int>> result; int length = nums.size(
2015-07-17 14:34:43 320
The Algorithm Design Manual-Steve S. Skiena Second Edition
2015-07-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人