
leetcode
文章平均质量分 58
MrGeroge
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
WordLadder
1.问题描述: 给定一个开始单词,每次只允许经过一个字符的变化,且变化后的单词需要在给定的词典中(不可重复出现),最后变换到结束单词,在这个过程中一共需要变换的最少次数 2.解题思路: 1)每轮开始单词保存在beginSet集合中,每轮结束单词保存在endSet中,已访问过的单词保存在visitedSet中 2)只要beginSet为空或者endSet为空,则不存在这种变换返回0 3)如原创 2017-12-09 16:22:26 · 442 阅读 · 0 评论 -
SurroundedRegions
1.问题描述 给定一个包含'X'和'O'的2D板,捕捉所有被'X'包围的区域。一个区域通过在所围绕的区域中将所有的'O'翻转成'X'来捕获。 2.解题思路 采用递归解决,若区域中某个位置的元素为'O'则对其元素转换为'*',则对其上下左右相邻元素进行处理 3.程序源码 public void DFS(char[][] board, int row, int col) {原创 2017-12-07 10:28:40 · 408 阅读 · 0 评论 -
PalindromePartitioningLi
1.问题描述: 给定一个字符串s,进行最少的分割,使得每个分割的子串都是回文串 2.解题思路: 动态回归算法的最优问题是找到从0~n-1的最少分割 1)最优子问题描述:找到从i~n-1的最少分割,用dp[i]表示 2)递归表示最优子结构:dp[i]=min{dp[j+1]+1} i 3) 自顶向下表示最优解即dp[0] for(int i=len-1;i>=0;i++){ dp[原创 2017-12-05 16:18:08 · 213 阅读 · 0 评论 -
Candy
1.问题描述: 给N个小朋友发糖果,需要保证每个小朋友至少一个糖果,以及权重大的小朋友比其邻居要多,最优问题是在满足上述条件下,给N个小朋友发的糖果总数最少 2.解题思想: 1)边界考虑,若ratings的数量为0,则返回0(0个人则不需要发糖果) 2)动态规划: 2.1)最优子问题:假设每个人的初始糖果数都为1个,即count[]的每个元素为1,从前向后发糖果需保证若ratings[i原创 2017-12-04 18:46:34 · 297 阅读 · 0 评论 -
IsWordBreak
1.问题描述 判断给定字符串s是否可以被给定的词典dict分割,输出为true or false 2.解题思路: 动态规划问题: 1)考虑边界限制,如果s为空串或者dict为空,则直接返回false 2)动态规划: 2.1)最优子结构描述:实际上可以扩展为判断s[0,i]是否可分 2.2) 递归表示最优子结构:f(i)=f(j)&&f(j,i) //在0~i之间是否存在一个点j使得原创 2017-12-04 15:47:54 · 269 阅读 · 0 评论 -
WordBreak
1.问题描述 给定一个字符串s,以及无重复元素的词典dict,找出所有由dict单词组合形成的所有s表示,其中组成同一个s的所有单词之间用空格分割 2.解题思路 动态规划: 1)假设存在全局的map,其key保存用于分割的 字符串s,其value保存所有可能的单词组合 2)如果s在map中,则直接返回其value值 3)如果s不在map中,若s刚好为dict中的一个单词,则将s加入va原创 2017-12-04 14:49:02 · 246 阅读 · 0 评论 -
MaxPointsOnALine
1.问题描述: 给定2D空间的一个顶点集,判断在同一条直线上的最多点数 2.解题思路: 1)判断若顶点集的大小 2)否则利用穷举法,产生任意两点构成直线的情况 3)统计上述产生的每条直线,最多共有多少个顶点 3.1)若构成直线的两点重合,则相同点计数器+1 3.2)寻找构成直线的第二个顶点后面同在一条直线上的点 (斜率判断,乘法表示) 3.3)相同点个数+同在一条直线上的个数就等于原创 2017-12-03 15:46:12 · 392 阅读 · 0 评论 -
MaximalRectangle
1.问题描述 给定一个由'0'和'1'组成的2D空间,找到这个空间中只包含1的最大矩阵 2.解题思路 将此问题转换为求只包含'1'的左边界和右边界问题 3.程序源码 public int maximalRectangle(char[][] matrix) { if(matrix==null || matrix.length原创 2017-12-20 10:42:24 · 479 阅读 · 0 评论 -
ConvertSortedListToBinarySearchTree
1.问题描述 根据给定的有序单链表,创建一个平衡二叉查找树(每个节点node的左子树node.left上的节点值都小于node.val,每个节点node的右子树node.right上的节点值都大于node.val) 2.解题思路 寻找head(开始节点),tail(结束节点)的中位节点,即采用fast指针和slow指针完成,其中fast指针遍历的速度是slow指针的两倍,这样每次遍历完slo原创 2017-12-11 16:51:58 · 373 阅读 · 0 评论 -
DistinctSubsequences
1.问题描述 给定字符串S和T,求S中T的子串个数,T的子串为删除T的任意元素构成的新串 2.解题思路 DP问题,最优子结构dp[i][j]为S[0...i-1]中T[0...j-1]的子串数量 若S.charAt(i-1)!=T.charAt(j-1)说明两个串的最后一个元素不相同,dp[i][j]=dp[i-1][j](S中T的子串数量与S的最后一个元素无关) 若S.charAt(i原创 2017-12-11 14:07:36 · 336 阅读 · 0 评论 -
BestTimeToBuyAndSellStockIII
1.问题描述 给定一个数组prices,其中prices[i]表示为第i天的股票价格,在保证最多两次交易的前提下且再次购买前必须先卖出,求最大收益 2.解题思路 1)由于最多两次交易,因此设置变量buy1,sell1,buy2,sell2 2)类似于四个数比较大小 buy1=Math.max(buy1,-prices[i]) sell1=Math.max(sell1,buy1+pri原创 2017-12-09 21:47:47 · 360 阅读 · 0 评论 -
InterleavingString
1.问题描述 给定字符串s1,s2,s3,判断由s1,s2是否可以构成s3 2.解题思路 动态规划问题,由于返回值是boolean类型,因此假设有二维数组dp 1)最优子问题描述: 最优问题是s1,s2是否可构成s3,即0~s1.length-1和0~s2.length-1是否可构成i+js3 最优子问题则可以理解为s1中0~i与s2中0~j是否可构成s3 2)递归表示最优子结构原创 2017-12-18 11:36:59 · 355 阅读 · 0 评论