leetcode
文章平均质量分 58
MrGeroge
这个作者很懒,什么都没留下…
展开
-
WordLadder
1.问题描述:给定一个开始单词,每次只允许经过一个字符的变化,且变化后的单词需要在给定的词典中(不可重复出现),最后变换到结束单词,在这个过程中一共需要变换的最少次数2.解题思路:1)每轮开始单词保存在beginSet集合中,每轮结束单词保存在endSet中,已访问过的单词保存在visitedSet中2)只要beginSet为空或者endSet为空,则不存在这种变换返回03)如原创 2017-12-09 16:22:26 · 381 阅读 · 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 · 363 阅读 · 0 评论 -
PalindromePartitioningLi
1.问题描述:给定一个字符串s,进行最少的分割,使得每个分割的子串都是回文串2.解题思路:动态回归算法的最优问题是找到从0~n-1的最少分割1)最优子问题描述:找到从i~n-1的最少分割,用dp[i]表示2)递归表示最优子结构:dp[i]=min{dp[j+1]+1} i3) 自顶向下表示最优解即dp[0]for(int i=len-1;i>=0;i++){dp[原创 2017-12-05 16:18:08 · 185 阅读 · 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 · 260 阅读 · 0 评论 -
IsWordBreak
1.问题描述判断给定字符串s是否可以被给定的词典dict分割,输出为true or false2.解题思路:动态规划问题:1)考虑边界限制,如果s为空串或者dict为空,则直接返回false2)动态规划:2.1)最优子结构描述:实际上可以扩展为判断s[0,i]是否可分2.2) 递归表示最优子结构:f(i)=f(j)&&f(j,i) //在0~i之间是否存在一个点j使得原创 2017-12-04 15:47:54 · 241 阅读 · 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 · 210 阅读 · 0 评论 -
MaxPointsOnALine
1.问题描述:给定2D空间的一个顶点集,判断在同一条直线上的最多点数2.解题思路:1)判断若顶点集的大小2)否则利用穷举法,产生任意两点构成直线的情况3)统计上述产生的每条直线,最多共有多少个顶点3.1)若构成直线的两点重合,则相同点计数器+13.2)寻找构成直线的第二个顶点后面同在一条直线上的点 (斜率判断,乘法表示)3.3)相同点个数+同在一条直线上的个数就等于原创 2017-12-03 15:46:12 · 354 阅读 · 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 · 435 阅读 · 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 · 327 阅读 · 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 · 297 阅读 · 0 评论 -
BestTimeToBuyAndSellStockIII
1.问题描述给定一个数组prices,其中prices[i]表示为第i天的股票价格,在保证最多两次交易的前提下且再次购买前必须先卖出,求最大收益2.解题思路1)由于最多两次交易,因此设置变量buy1,sell1,buy2,sell22)类似于四个数比较大小buy1=Math.max(buy1,-prices[i]) sell1=Math.max(sell1,buy1+pri原创 2017-12-09 21:47:47 · 322 阅读 · 0 评论 -
InterleavingString
1.问题描述给定字符串s1,s2,s3,判断由s1,s2是否可以构成s32.解题思路动态规划问题,由于返回值是boolean类型,因此假设有二维数组dp1)最优子问题描述:最优问题是s1,s2是否可构成s3,即0~s1.length-1和0~s2.length-1是否可构成i+js3最优子问题则可以理解为s1中0~i与s2中0~j是否可构成s32)递归表示最优子结构原创 2017-12-18 11:36:59 · 323 阅读 · 0 评论