摘要:动态规划十大经典案例 动态规划是一种常用的算法思想,它可以解决很多优化问题,比如求最大值、最小值、最长子序列等。动态规划的基本思想是把一个复杂的问题分解成若干个子问题,然后从最简单的子问题开始,逐步推导出更大的子问题的解,最终得到原问题的解。动态规划通常需要定义一个状态数组,表示不同阶段的最优解,以
阅读全文
lotus贵有恒何必三更眠五更起 最无益只怕一日曝十日寒 |
|
随笔分类 - 算法
摘要:动态规划十大经典案例 动态规划是一种常用的算法思想,它可以解决很多优化问题,比如求最大值、最小值、最长子序列等。动态规划的基本思想是把一个复杂的问题分解成若干个子问题,然后从最简单的子问题开始,逐步推导出更大的子问题的解,最终得到原问题的解。动态规划通常需要定义一个状态数组,表示不同阶段的最优解,以
阅读全文
摘要:大纲 什么是动态规划 动态规划的定义和特点 动态规划的基本思想和步骤 动态规划的分类和常见问题 线性动态规划 最长公共子序列 最长递增子序列 最大子数组和 区间动态规划 矩阵链乘法 括号化问题 背包动态规划 0-1背包问题 完全背包问题 多重背包问题 状态压缩动态规划 旅行商问题 汉密尔顿回路问题
阅读全文
摘要:动态规划入门指南 动态规划是一种解决复杂问题的方法,它可以将一个问题分解为若干个子问题,并利用子问题的最优解来构造原问题的最优解。动态规划适用于具有重叠子问题和最优子结构的问题,即子问题之间有相互依赖的关系,且子问题的最优解可以推导出原问题的最优解。 本文将介绍动态规划的基本概念、常见模式、解题框架
阅读全文
摘要:ref :https://leetcode.cn/circle/article/2Xxlw3/ 这是一篇我在leetcode.com上撰写的文章Dynamic Programming Summary,就不翻回中文了,直接copy过来了。 Hello everyone, I am a Chinese
阅读全文
摘要:不同的二叉搜索树 (卡特兰数) N 天后的牢房 骑士拨号器 最大为 N 的数字组合 鸡蛋掉落 石子游戏 新21点 分汤 有效的井字游戏 统计不同回文子字符串 编辑距离 买卖股票的最佳时机含手续费 爬楼梯 奇怪的打印机 不同路径 II 不同路径 出界的路径数 二叉树的直径 最大子序和 优美的排列 零钱
阅读全文
摘要:算法中有多种查找方法,常见的有: 顺序查找:从一端开始,顺序扫描,依次将扫描到的结点关键字与给定值k相比较,若相等则表示查找成功;若扫描结束仍没有找到关键字等于k的结点,表示查找失败。 二分查找:在有序的数组中,确定中间的下标mid=(left+right)/2,然后让需要查找的数findVal和a
阅读全文
摘要:完全背包问题 问题描述 有N种物品和一个容量为V的背包,每种物品有无限件可用,第i种物品的体积是v[i],价值是w[i],求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 状态定义和状态转移方程 一种常用的状态定义是:dp[i][j]表示前i种物品放入容量为j的背包中能获得
阅读全文
摘要:1. 题目 读题 给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 示例 1: 输入:nums = [1,2,3], target = 4输出:7解释:所有可
阅读全文
摘要:1. 题目 读题 518. 零钱兑换 II给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带符号整数。
阅读全文
摘要:1. 题目 读题 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个 1 。 如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。 示例 1: 输入:strs = ["10", "
阅读全文
摘要:1. 题目 读题 https://leetcode.cn/problems/target-sum/description/ 考察点 这道题的考察点是如何将一个看似复杂的问题转化为一个简单的问题,以及如何运用不同的算法思想来解决问题。具体来说,有以下几个方面: 如何利用数学公式将原问题转化为一个01背
阅读全文
摘要:https://blog.csdn.net/wdays83892469/article/details/79763421 一些关于动态规划和游戏最大伤害的题目和解法。 动态规划——卡牌游戏最大伤害_eck_燃的博客-CSDN博客 这篇博客介绍了一个卡牌游戏的问题,给出了暴力递归和动态规划的两种解法,
阅读全文
摘要:动态规划背包问题 1. 引言 动态规划是一种解决复杂问题的方法,它可以将一个问题分解为若干个子问题,然后利用子问题的最优解来构造原问题的最优解。动态规划的核心思想是避免重复计算,即将已经求解过的子问题的结果保存起来,以便后续使用。 背包问题是一类经典的动态规划问题,它描述了一个背包有一定的承重上限,
阅读全文
摘要:快速排序及其实现 快速排序是一种高效而常用的排序算法,它的基本思想是通过选择一个基准元素,将数组分成两个子数组,其中一个子数组中的元素都小于基准元素,另一个子数组中的元素都大于基准元素,然后对这两个子数组递归地进行快速排序,从而实现整个数组的排序。快速排序的平均时间复杂度为O(nlogn),最坏时间
阅读全文
摘要:归并排序及其实现 归并排序是一种基于分治思想的排序算法,它的基本思想是将一个大的数组分成两个或多个小的数组,对每个小的数组进行排序,然后将这些有序的小数组合并成一个大的有序的数组。归并排序的时间复杂度为O(nlogn),空间复杂度为O(n),是一种稳定的排序算法。 归并排序的思想和本质是: 分治:将
阅读全文
摘要:等概率随机取数算法的几种实现 最近读了项目中的工具脚本,发现一个随机取数的函数,功能大概是从M个数中不重复的随机取出N个数,算是数组随机排序然后取前N个值的变种。 脚本实现采取原始的方法,每随机取一个数就放到一个数组中,下次取数时遍历结果数组判断是否已经取出,平均时间复杂度为O(MlogM),空间复
阅读全文
|