- 博客(15)
- 资源 (9)
- 收藏
- 关注
原创 91. Decode Ways
91. Decode Ways已知:‘A’---1‘B’--2...'Z'--26给出一个字符串例如“12”则有可能是当作“AB”(1 2)也有可能是“L”(12)故一共有2中看法。思路,很明显这是一个多层次影响求单值问题,可以采用动态规划:引入数组dp[i]表示s0,s1,...si-1这样前i个字符求法个数,注意字符串s每一位都有可能取值‘0-9’当
2017-04-28 23:05:36 257
原创 Leetcode84. Largest Rectangle in Histogram
84. Largest Rectangle in Histogram给定一个n长非负整数数组,每个元素值代表一个bar高度,求这些bar围成的最大矩形面积。思路如下:先假定数组是长为n的有序数组num,则这些bar高度从左到右依次增加,例如1,2,5,7,8,此时围成矩形面积将最大值:maxarea=max(num[0]*(n),num[1]*(n-1),...,num[n
2017-04-24 23:13:57 316
原创 Leetcode76. Minimum Window Substring
76. Minimum Window Substring给定一个主串s和匹配串t,要求主串中字串包含t串所有字符,求这样的最小长度字串。例如S = "ADOBECODEBANC"T = "ABC"则最小字串为“BANC”。1 这里引入HASH机制,即定义一个map a,记录t中每个字符出现的次数这里设置一个计数器cn;2 引入首尾两个指针i和l,之间就是包含字符
2017-04-23 18:18:58 417
原创 Leetcode 68. Text Justification
68. Text Justification描述如下,要求从一个字符串数组,选择若干个单词组成一个新字符串,并相互之间对齐,注意以下几点:1 单词直接至少相差一个空格;2 每一行都要求左对齐;除了最后一行,其他行都要求右对齐,最后一个行,只要保证左对齐即可;3 每一行元素总数一定一样,若缺少用空格补,原则是要求左右空格数目均匀,若做不到均匀则左侧较多空格。例如:wo
2017-04-19 19:34:04 295
原创 LeetcodeUnique Paths
62. Unique Paths本题是典型的迷宫问题,M×N的格子,从(0,0)出发,只能向下或者向右,求到达终点(m-1,n-1)的路径数目,首先想到的是递归回溯:void helper_robot(int m,int n,int&res,int x,int y){if(x==m-1&&y==n-1){res++;return;}if(x+1<m)helper_robot(m
2017-04-18 14:12:23 258
原创 LEETCODE60. Permutation Sequence
60. Permutation Sequence 内容如下:已知正整数n的全排列按照字典序:1 1232 1323 2134 2315 3126 321先给出n和k,即求n全排序的第k个排列一开始是采用回溯思想(回溯):string intTosting(vector ss){string s="";if(ss.size()<1)return s;
2017-04-17 16:42:26 281
原创 五大经典算法之四贪心算法
基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择,贪心策略使用的前提是局部最优能导致全局最优。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态
2017-04-13 23:24:38 20368 1
原创 Linux 三大文本处理命令之一GREP
grep,全称global search regular expression(RE) and print out the line。是一种强大的文本搜索工具,根据正则表达式,把匹配的行输出。Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast
2017-04-10 16:57:30 1085
原创 五大经典算法之三动态递归DP
五大经典算法 动态递归DP首先需要决定存储什么历史信息,以及用什么数据结构来存储。然后最重要的就是递推公式,最后需要考虑起始条件的值。我们用dp[i]表示到字符串s的第i个元素为止能不能用字典里的词表示。假设已经知道dp[0,1,,,,i-1]的结果,要求dp[i]Leetcode 139. Word Break要求一个非空字符串s,一个非空的字符串词典,判断s能够通过空格组成
2017-04-10 15:49:25 2981
原创 Leetecode 36 37 Sudoku问题
首先了解什么树sudoku,见http://sudoku.com.au/TheRules.aspx即在9X9棋盘里,每一行都要包括1-9数字,每个数字只能出现一次不能重复;每一列都要包括1-9数字,每个数字只能出现一次不能重复;每个3x3小宫格要包括1-9数字,每个数字只能出现一次不能重复。36. Valid Sudoku 主要是对已有的一个9X9棋盘(部分填充数字,没有数字的
2017-04-06 22:35:58 512
原创 Leetcode 33. Search in Rotated Sorted Array
题目如下:Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).You are given a target value to search. If found i
2017-04-06 11:04:20 420
原创 Leetcode 32. Longest Valid Parentheses
Given a string containing just the characters '(' and ')', find the length of the longest valid (well-formed) parentheses substring.For "(()", the longest valid parentheses substring is "()", which ha
2017-04-05 22:32:29 239
原创 函数调用过程分析
编译器一般使用堆栈实现函数调用,Windows为每个线程维护一个堆栈,堆栈大小可以设置,编译器可以使用堆栈存放每个函数参数,局部变量等。由于函数调用经常会被嵌套,故同一时刻,堆栈中存储多个函数的信息,每个函数会占一个连续区域,一个函数占用的区域称为帧,编译器是从高地址开始使用堆栈,在多线程任务下,CPU的堆栈指针指向的存储器区域就是当前使用的堆栈。切换线程时,把堆栈指针设为当前线程所在堆栈的栈顶地
2017-04-05 16:51:53 1614
原创 Leetcode29. Divide Two Integers
29. Divide Two Integers内容如下:Divide two integers without using multiplication, division and mod operator.If it is overflow, return MAX_INT.对于一般的32位OS,int 4字节 范围:2^31--2^31-1即-2147483648(INT_
2017-04-03 23:19:06 620
clang_library
2015-11-28
tags_vim_master
2015-11-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人