
算法
吃饭睡觉胖胖胖
没有感情的码字机器
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode 97.交错字符串(递归 + dp)
问题描述递归拿到这个问题的第一反应就是递归:假设 s1 的第一个字符和 s3 的第一个字符相等,那么问题就转化为去掉第一个字符的 s1 和完整的 s2 能否交错组成去掉第一个字符的 s3。以此类推,只要最终 s1,s2,s3 能完全匹配就返回 true,如果递归遍历所有情况都不存在解就返回 false。最后需要注意可以先通过长度判断去掉一些不可能返回 true 的情况。public boolean isInterleave(String s1, String s2, String s3) {原创 2020-10-28 13:31:01 · 379 阅读 · 0 评论 -
LeetCode 85.最大矩形(穷举 + dp + 栈)
题目描述穷举法无论拿到什么问题,首先试着用穷举法解答,这样可以有效的加深对题目的了解以及扩展思路。在本题中,我们可以模拟矩形的左上点坐标以及右下点左边,遍历所有情况就可以找出答案。虽然复杂度很高,但可以快速理解题意:public int maximalRectangle1(char[][] matrix) { if (matrix.length == 0) { return 0; } int result = 0, height = matrix.len原创 2020-08-31 16:46:22 · 173 阅读 · 0 评论 -
LeetCode 84.柱状图中最大的矩形(穷举 + 栈)
问题描述穷举法(穷举行)对于该问题,首先想到遍历所有柱子情况。这里我们首先根据行来遍历,即依次遍历长度为1、2、3…n 的柱子,计算他们所能形成的最大长方体:其中长方体的长度就是我们遍历的长度,长方体的高度即这些柱子中最低柱子的高度public int largestRectangleArea(int[] heights) { int result = 0, length = heights.length; // 遍历长方体长的起始下标 for (int left =原创 2020-08-27 16:55:51 · 185 阅读 · 0 评论 -
LeetCode 42.接雨水(dp + 栈 + 双指针)
问题描述暴力解法首先,对于每一列来说,如果它的左边、右边都存在比自己高的柱子,那么它一定能储水,储水量等同于左边和右边最大值中较小的那个值减去自身高度的差。有了这个思路,我们就可以通过暴力遍历的方法解决该问题:public int trap(int[] height) { int result = 0; int length = height.length; // 最左和最右的柱子一定不能储水,无需遍历 for (int i = 1; i < length原创 2020-08-26 14:30:49 · 200 阅读 · 0 评论 -
二插搜索树相关算法题
概要二插搜索树:它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。下面我列举出几道最近刷letCode遇到的和二插搜索树有关的算法题:问题描述给你一棵树,判断这颗树是否二插搜索树。(注:题目来自letCode 98.验证二...原创 2020-02-28 00:44:10 · 252 阅读 · 0 评论 -
二叉树中序遍历的常见方法
概述中序遍历,是二叉树遍历的一种。在二叉树中,中序遍历首先遍历左子树,然后遍历根节点,最后遍历右子树。递归遍历法public List<Integer> getLDRMethod1(TreeNode treeNode) { List<Integer> result = new ArrayList<>(); if (treeNod...原创 2020-02-27 23:51:57 · 1219 阅读 · 0 评论 -
最大子序列和问题(leetCode 53)
问题描述给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。问题分析假设我们现在用 p 表示以第三个数字为结尾的最大和,那么以第四个数字的为结尾的最大和就是 p + 第四个数 和 第四...原创 2020-02-13 13:33:02 · 303 阅读 · 0 评论 -
最长有效括号问题(leetcode 32)
问题描述给定一个只包含'('和')'的字符串,找出最长的包含有效括号的子串的长度。示例输入: "(()"输出: 2解释: 最长有效括号子串为 "()"问题分析对于这个问题,最容易想到的就是通过暴力解决:遍历所有可能出现的长度为偶数的子串,判断它是否满足题目要求,找出其中长度最大的那种情况即可。在判断一个字符串是否有效括号的时候可以通过栈来做,对于 “...原创 2020-02-07 17:46:01 · 305 阅读 · 0 评论 -
正则表达式匹配问题(leetcode 10)
问题描述给你一个字符串s和一个字符规律p,请你来实现一个支持 '.'和'*'的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。说明:s可能为空,且只包含从a-z的小写字母。p可能为空,且只包含从a-z的小写字母,以及字符.和*。示例输入:s ...原创 2020-02-06 14:01:59 · 764 阅读 · 0 评论 -
最长回文串问题(leetCode 5)
问题描述给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。示例输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。问题分析回文串的意思是“从前往后读和从后往前读是一样的”,举个简单的例子“上海自来水来自海上”。所以这里我们可以将原字符串反转,求两个字符串的最长公共子序列。例如:abbc 的反...原创 2020-02-05 15:09:19 · 317 阅读 · 0 评论 -
目标和问题(leetCode 494)
问题描述给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S。现在你有两个符号+和-。对于数组中的任意一个整数,你都可以从+或-中选择一个符号添加在前面。返回可以使最终数组和为目标数 S 的所有添加符号的方法数。注意:数组非空,且长度不会超过20。 初始的数组的和不会超过1000。 保证返回的最终结果能被32位整数存下。样例输入nu...原创 2020-01-20 15:32:09 · 254 阅读 · 0 评论 -
装箱问题
问题描述有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品有一个体积(正整数)。要求n个物品中,任取若干个装入箱内,使箱子的剩余空间为最小。输入描述一个整数v,表示箱子容量一个整数n,表示有n个物品接下来n个整数,分别表示这n 个物品的各自体积输出描述一个整数,表示箱子剩余空间。样例输入246...原创 2019-02-22 13:03:55 · 416 阅读 · 1 评论 -
选菜
问题描述 在小松宿舍楼下的不远处,有PK大学最不错的一个食堂——The Farmer’s Canteen(NM食堂)。由于该食堂的菜都很不错,价格也公道,所以很多人都喜欢来这边吃饭。The Farmer’s Canteen的点菜方式如同在超市自选商品一样,人们从一个指定的路口进去,再从一个指定的路口出来并付款。由于来这里就餐的人数比较多,所以人们自觉地在进入口的时候就排成一个长队...原创 2019-02-23 14:55:00 · 290 阅读 · 1 评论 -
装箱问题 2
问题描述一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为1*1, 2*2, 3*3, 4*4, 5*5, 6*6。这些产品通常使用一个 6*6*h 的长方体包裹包装然后邮寄给客户。因为邮费很贵,所以工厂要想方设法的减小每个订单运送时的包裹数量(注:该题不存在打箱套小箱子)。他们很需要有一个好的程序帮他们解决这个问题从而节省费用。现在这个程序由...原创 2019-02-24 11:34:41 · 550 阅读 · 1 评论 -
装箱问题 3
问题描述设有n种物品,记作A1、A2、…、An,对应于每个Ai(1<=i<=n)都有一个重量Awi和价值Avi(重量和价值都为正整数)。另外,对应于每个Ai,都有一件可代替它的“代用品”Bi,Bi的重量和价值分别为Bwi和Bvi。本题的任务是:选择这n件物品或其代用品的一个子集装进背包,使总重量不超过给定重量TOT,同时使总价值VAL最高。装填的第I步,要么装入Ai,要么装入...原创 2019-02-24 12:27:16 · 761 阅读 · 0 评论 -
乘积最大
问题描述今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目:设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大。同时,为了...原创 2019-02-28 23:04:03 · 2174 阅读 · 0 评论 -
蛇形填数
问题描述输入数字n,输出相应的蛇形矩阵输入样例5输出样例1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9问题分析可以将输出结果通过二维数组来保存,横纵坐标分别对应该数在输出结果中的位置。这样我们只需要确定每个坐标的结果即...原创 2019-02-20 10:43:32 · 194 阅读 · 1 评论 -
生日礼物
题目描述9月12日是小松的朋友小寒的生日。小松知道小寒特别喜欢蝴蝶,所以决定折蝴蝶作为给小寒的生日礼物。他来到了PK大学最大的一家地下超市,在超市里,小松找到了n种可以用来折纸的本子。每种类型的本子里有若干不同颜色的纸若干张,当然同种类型的本子一定是完全一样的,而不同种类型的本子不一定完全不一样。他统计了一下,这里总共有n种不同类型的可以用来折纸的本子,每种本子各有bi本,所有的纸中有m种颜...原创 2019-02-25 21:54:18 · 333 阅读 · 1 评论 -
质数环
问题描述一个大小为N(N<=17)的质数环是由1到N共N个自然数组成的一个数环,数环上每两个相邻的数字之和为质数。如下图是一个大小为6的质数环。为了方便描述,规定数环上的第一个数字总是1。如下图可用1 4 3 2 5 6来描述。若两个质数环,数字排列顺序相同则视为本质相同。现在要求你求出所有本质不同的数环。输入描述只有一个数N,表示需求的质数环的大小。如:输出描述...原创 2019-02-21 13:40:13 · 1529 阅读 · 2 评论