随笔分类 - 算法真奇妙
摘要:0-1背包问题 1.问题描述 现有n种物品和一个背包 物品i的重量是Wi, 价值是Vi, 背包容量是c 如何选择物品,才能使得背包中的物品价值之和最大 2. 分析思路 模型: sum(Vi*Xi) , sum(Wi*Xi) ⇐ c , xi取值为0或者1 递归求解,对于物品序列 Item1, Ite
阅读全文
摘要:DP问题学习笔记 1. 相关概念 dp两大性质 最优子结构问题: 如果问题的解是最优的,那么子问题的解也是最优的 利用备忘录思想解决重叠子问题计算问题 dp问题coding的常见步骤 找出最优解的性质,利用树, 图等数据解构刻画其结构特征 递归的定义的最优值 自底向上分析,找出状态转移方程, 计算子
阅读全文
摘要:最大子段和 -- 分治,dp 1.问题描述 输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 示例1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 2.分析问题
阅读全文
摘要:完全背包问题贪心算法入门 题目描述 一个背包容量为c, 共有n中物品, 第i个物品的重量为Wi, 价值为Vi. 选择物品装入背包, 可以只装入一部分, 请问,如何装,可以使背包的价值最大. 解决思路 此题和0-1背包问题的不同在于, 0-1背包问题要求物品全部装进去, 而完全背包问题要求物品可以只装
阅读全文
摘要:top K 问题 /** * 输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 * * * * 示例 1: * * 输入:arr = [3,2,1], k = 2 * 输出:[1,2] 或者 [2,1] * 示例
阅读全文
摘要:写在前面:成功AC一道题总是多舛啊 题目描述 /** * 题目描述 * xiaok大佬最近再雇佣工人给他掰木棒。把一根长为L的木棒锯成两段,他需要支付给工人L元钱。xiaok大佬一开始只有长为L的一根木棒,他想把它锯成n段, * 每段长度分别为L1,L2,...,Ln,问xiaok大佬最少要付给工人
阅读全文
摘要:dp经典问题之矩阵连乘问题 问题描述 思路分析 这个问题很明显可以用递归的思路的思考,先把连乘的矩阵分成两部分,分别递归地算出左边部分连乘需要的乘法次数和右边部分连乘需要乘法次数,最后计算两部分连乘的结果相乘的需要的乘法次数,求和得出需要的乘法总数。 A1* A2*A3可以分成A1*A2 和A3两部
阅读全文
摘要:沙子划分问题 /** * @Author Fizz Pu * @Date 2020/10/11 下午18:25 * @Version 1.0 * 失之毫厘,缪之千里! */ /** * 题目描述 * 设有N堆沙子排成一排,其编号为1,2,3,…,N(N< =300)。每堆沙子有一定的数量,可以用一个
阅读全文
摘要:二分法学习笔记第一版 1. 理论知识 二分法可以变成一棵高度优化的二叉搜索树,适用条件 数据有序 支持随机访问 2. 应用场景 二分搜索常常用于优化暴力搜索,快速求解,时间复杂度是O(logn) 3.二分算法常见的三种类型 搜索特定值 /** * 子有序表中搜索target对应的下标,若不存在,则返
阅读全文
摘要:采用递归的方法实现二分查找。 在一个有序数组list中,从下标1开始,查看target是否在数组中。在的话就返回下标,否则返回0。 思路 1.对线性表排序,通常是由小到大排序。 2.取中间值与目标值比较。 2.1取中间值与目标值比较,若相等,则返回下标,退出函数。 2.2中间值比目标值要大,那么在最
阅读全文

浙公网安备 33010602011771号