自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一只不断成长的藏獒

没什么可以一蹴而就,总会有低迷的时候,但请坚持,相信,只要坚持下去,你总会有变得强大的时候,所以努力吧!

  • 博客(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

原创 算法设计技巧

算法设计技巧 1:先定位大范围,再定位小范围。算法设计技巧 2:将一些信息记录下来,最后根据这些信息执行一系列改变实体的操作。

2015-07-28 12:39:48 554

原创 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 318

原创 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 274

原创 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

编译器设计 第二版(engineering a compiler 中文版)绝版书

自己买的 编译器设计 第二版(engineering a compiler 中文版)绝版书

2018-03-16

The Algorithm Design Manual-Steve S. Skiena Second Edition

The Algorithm Design Manual-Steve S. Skiena second edition

2015-07-08

The Algorithm Design Manual-Steve S. Skiena

The Algorithm Design Manual-Steve S. Skiena

2015-07-08

程序员面试宝典第四版高清完整PDF

程序员面试宝典第四版PDF,内容与纸质书一样,但是页数不一样

2015-03-08

c和指针课后题答案(完整版)

c和指针课后题答案(完整版),内容为 c和指针课后解答中未包含的所有解答,和c和指针课后解答配套使用。

2014-04-25

空空如也

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

TA关注的人

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