随笔分类 - 算法
java基础算法学习、菜鸟
摘要:给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串: s = s1 + s2 + ... + sn t = t1 + t2 + ... + tm |n - m|
阅读全文
摘要:给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 示例 1: 输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从
阅读全文
摘要:给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处: 0 <= j <= nums[i] i + j < n 返回到达 n
阅读全文
摘要:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 示例
阅读全文
摘要:给定由 n 个字符串组成的数组 strs,其中每个字符串长度相等。 选取一个删除索引序列,对于 strs 中的每个字符串,删除对应每个索引处的字符。 比如,有 strs = ["abcdef", "uvwxyz"],删除索引序列 {0, 2, 3},删除后 strs 为["bef", "vyz"]。
阅读全文
摘要:思路 1、计算每个位置上方连续1的个数,表示该位置的行高 2、将每一行进行排序,以该行为底,计算每一列的位置索引与行款的关系表示底边长(width = ) 3、计算面积 代码 import java.math.BigDecimal; import java.util.*; import java.u
阅读全文
摘要:思路 1、使用回溯算法,不断的尝试覆盖numselect行数 2、找到最大覆盖行数 代码 import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; public class Main {
阅读全文
摘要:动态规划是一种算法思想,主要用于解决最优化问题,即在满足一定约束条件下,求解某个指标的最大值或最小值。动态规划通常用于具有重叠子问题和最优子结构性质的问题,可以通过将问题分解成子问题来求解,从而避免重复计算。 应用场景,例如: 1. 最长公共子序列问题:给定两个字符串,求它们的最长公共子序列。 2.
阅读全文
摘要:问题 思路 1、回溯全遍历 2、不符合的及时剪枝 代码 import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; public class Main { public static voi
阅读全文
摘要:零一背包 给定一组物品,每个物品有自己的重量和价值,以及一个背包的容量。目标是选择一些物品放入背包中,使得在不超过背包容量的情况下,背包中物品的总价值最大化。 思路 1、定义问题dp[i][j]:表示前i个物品中当容量为j时的最大价值 2、定义状态转移方程 (1) Dp[i][j] = math.m
阅读全文
摘要:题目详情 解题思路 1、暴力破解:复杂度高,动态规划:降低复杂度 动态规划思路 1、定义最优解dp[i]:表示容量为i的时候能够拆解的种类 2、定义重叠子问题:如果当前物品可以装,那么dp[i]就等于已经装过的种数加上dp[j - weights[i]], j - weights[i]表示如果拿取当
阅读全文
摘要:思路参考:最长公共子序列 public class Solution { /** * longest common substring * @param str1 string字符串 the string * @param str2 string字符串 the string * @return st
阅读全文
摘要:题目:给定两个字符串 str1 和 str2,返回这两个字符串的最长公共子序列的长度解释:一个字符串的子序列是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串,如下图示: 也就是说对于以下两个字符串 str1 和 str2,其最长
阅读全文
摘要:题目描述 给定一个数组arr,返回子数组的最大累加和 例如,arr = [1, -2, 3, 5, -2, 6, -1],所有子数组中,[3, 5, -2, 6]可以累加出最大的和12,所以返回12. [要求] 时间复杂度为O(n),空间复杂度为O(1) public class Solution
阅读全文
摘要:问题描述 设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。 输入格式: 输入数据的第一行有1 个正整数n (1≤n≤20)。接下来的n行,每行n个数,表示工作费用。 输出格式: 将计算出的
阅读全文
摘要:一、算法含义 回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思路是:暴力算法的改进,在通过遍历所有路径基础上,通过回溯(往回找)筛除不可能的路径,提高效率。 二、解题步骤: 1.确定一个解空间,它包含问题的解;2.利用适于搜索的方法组织解空间;3.利用深度优先法搜索解空间;4.
阅读全文
摘要:问题描述 : 给定n位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新 的正整数。对于给定的n位正整数a和正整数 k,设计一个算法找出剩下数字组成的新数最 小的删数方案。 输入格式: 第 1 行是1 个正整数 a。第 2 行是正整数k。 输出格式: 输出最小数。 输入样例:
阅读全文
摘要:基本要素: 贪心选择:在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。 最优子结构:当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。 过程: 过程: 建立数学模型来描述问题; 把求解的问题分成若干个子问题;
阅读全文
摘要:一、问题描述 设A和B是2个字符串。要用最少的字符操作将字符串A转换为字符串B。这里所说的字符操作包括 (1)删除一个字符; (2)插入一个字符; (3)将一个字符改为另一个字符。 将字符串A变换为字符串B所用的最少字符操作数称为字符串A到 B的编辑距离,记为d(A,B)。 对于给定的字符串A和字符
阅读全文
摘要:一、含义 动态规划:多阶段(两段)最优化决策解决问题的过程就称为动态规划。 二、基本步骤 1、描述优解的结构特征。 2、递归地定义一个最优解的值。 3、自底向上计算一个最优解的值。 4、从已计算的信息中构造一个最优解。 三、何时采用动态规划 (1) 最优化原理:问题的最优解包含的字问题也有最优解,就
阅读全文

浙公网安备 33010602011771号