![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 61
赵jc
这个作者很懒,什么都没留下…
展开
-
回溯面试常考题
回溯二叉树和为某一路径值没有重复数字的所有排列有重复数字的所有排列字符串的排列二叉树和为某一路径值https://leetcode-cn.com/problems/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof/class Solution { List<List<Integer>> ret = new LinkedList<>(); LinkedList<Integer> path原创 2021-09-01 23:09:41 · 171 阅读 · 0 评论 -
动态规划dp常考面试题(最长xxx)
动态规划dp三角形最小路径和最长增长子序列二级目录三级目录三角形最小路径和题目链接:https://leetcode-cn.com/problems/triangle///自底向上class Solution { public int minimumTotal(List<List<Integer>> triangle) { int n = triangle.size(); if (triangle == null || n == 0){原创 2021-05-14 17:37:36 · 312 阅读 · 2 评论 -
AcWing 校门外的树
校门外的树问题描述分析AC代码问题描述问题链接 https://www.acwing.com/problem/content/424/分析先new一个boolean类型的新数组(boolean默认的值为false)然后循环将每一个区间的值变为true然后遍历数组,统计false的值即可AC代码import java.util.*;public class Main{ public static void main(String[] args){ Scanner原创 2021-01-16 21:19:04 · 106 阅读 · 0 评论 -
LeetCode139单词拆分
单词拆分问题描述分析AC代码问题描述问题链接:https://leetcode-cn.com/problems/word-break/分析这道题可以采用动态规划来解决。问题:单词是否可以成功分割子问题:单词前几个字符是否可以成功分割状态F(i):单词前i个字符是否可以成功分割转移方程:这里的转移方程就不是等式了,而是搜索。第一步:先判断i之前是否有F(j)=true,如果没有直接返回false,如果有的话继续第二步:再在 j+1到i区间内查找是否有字典里包含的单词,如果有返回tru原创 2021-01-16 17:17:49 · 124 阅读 · 0 评论 -
AcWing剪绳子
剪绳子题目描述分析AC代码题目描述问题链接https://www.acwing.com/problem/content/description/682/分析我们可以将最优解的问题转换为判断是否满足条件问题的话会大大降低题目的难度。这道题的关键思路是二分查找通过循环找最大值赋值给right,因为特殊性,我们最小值left只能从0开始。然后开始二分查找,查找的过程中进行判断,如果每条绳子除以mid之后的和大于等于m,则left=mid;如果和小于mid,则right=mid;,否则即满足要求返原创 2021-01-15 11:41:19 · 110 阅读 · 2 评论 -
AcWing蛇形矩阵
蛇形矩阵问题描述分析AC代码问题描述问题链接:https://www.acwing.com/problem/content/758/分析如果要输入的话需要考虑当前数字的四个方向:上下左右。我们可以用两个一维数组dx和dy将当前数字上下左右的位置相对于当前数字的偏移量保存下来。并用0,1,2,3分别表示上右下左四个方向(顺时针),用变量d来保存用(x,y)表示当前位置,(a,b)表示下一步要走的位置,我们需要判断是否需要改变方向,这里又分两种情况:出界和之前已经走过该位置如果需要改变方向的话我原创 2021-01-14 14:32:35 · 149 阅读 · 2 评论 -
剑指offer42连续子数组的最大和
连续子数组的最大和问题描述分析AC代码问题描述分析我们可以采用动态规划(dp)来解决这道题。问题:求所有子数组的最大值(连续整数)状态:F[i]以第i个元素结尾的最大连续子序列和转移方程:F[i]=max(F([i-1]+A[i],A[i])初始状态:F[0]=A[0]返回值:F[i]注意:因为题目中是一个或连续多个整数组成一个子数组,所以状态一定要设置为以第i个元素结尾的最大连续子序列和才可以。然后转移方程的话,F[i]需要与取F[i-1]+A[i]和A[i]的最大值才行,如果加上原创 2021-01-13 21:18:13 · 155 阅读 · 0 评论 -
蓝桥杯入门训练 Fibonacci数列
分析:其实题目的提示已经很明显了,在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简单。由于题目要求的数据规模比较大,如果直接求和之后再取模,这种做法很可能会超时。然后我们必须要知道一个数学小知识,不然没法解决(哭)。要计算只包含加法、减法和乘法的整数表达式除以正整数n的余数,可以在每步计算之后对n取余,结果不变。可以根据下面这张图来理解一下知道了这个便简单了,我们可以.原创 2021-01-05 21:54:06 · 310 阅读 · 5 评论 -
AcWing数字三角形
这里写目录标题问题描述分析AC代码问题描述给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。问题链接:https://www.acwing.com/problem/content/900/分析这是一道经典的动态规划(dp)问题(如果用暴力法求解的话太复杂了,而且会超时),所以我们考虑用动态规划来解决这个问题,自顶向下的话需要考虑许多边界问题,所以我们采用自底向上的方式来解决。我们可以用原创 2021-01-10 22:07:37 · 257 阅读 · 1 评论 -
AcWing仓库选址
题目描述问题来源:https://www.acwing.com/problem/content/description/106/分析这道题涉及到一个数学知识(想要算法好,数学不能差)。**在数轴上,一个点到另外两个点的距离之和的绝对值大于等于这两个点距离的绝对值。**文字太枯燥了,下面结合图片来理解知道这个知识之后我们便会发现,当这个点(仓库X的位置)在两个点中间的话(两个商家的位置),它离两个点距离最短。之后我们根据这个推广一下,就是这道题的解了。如果有很多点的话,我们两两为一组原创 2021-01-10 11:23:30 · 444 阅读 · 5 评论