
算法
文章平均质量分 60
羊书change
这个作者很懒,什么都没留下…
展开
-
树状数组简介
步骤:将n个元素的数组分为n组,统计每组(<60)频数将所有频数两两一组向上合并,计算频数和尽可能合并所有频数,形成树形结构舍弃所有过程数据,记录到数组(BIT)中BIT数组与原数组等长奇数编号,记录原始分组频数偶数编号,记录连续区段累计频数偶数编号是关键节点,它们分别记录了2^k个连续频数之和(k=0,1,2,3…)代码package com.example.javalearning.leetcode;public class BinaryIndexTree {原创 2021-08-29 23:44:18 · 217 阅读 · 0 评论 -
LeetCode 126单词接龙II(官方解法)
给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回一个空列表。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 beginWord 和 endWord 是非空的,且二者不相同。示例 1:输入:beginWord = “hit”原创 2020-06-07 19:43:10 · 323 阅读 · 0 评论 -
五分钟解决圆排列问题
给定n个大小不等的圆c1,c2,…,cn,现要将这n个圆排进一个矩形框中,且要求各圆与矩形框的底边相切。圆排列问题要求从n个圆的所有排列中找出有最小长度的圆排列。例如,当n=3,且所给的3个圆的半径分别为1,1,2时,这3个圆的最小长度的圆排列如图所示。其最小长度为2+4sqrt(2)center函数:center计算圆在当前圆排列中的横坐标,由x^2 = sqrt((r1+r2)^2-(r...原创 2020-03-28 11:31:18 · 2521 阅读 · 0 评论 -
0 1背包回溯法详解
问题描述给定n种物品和一背包。物品i的重量是wi>0,其价值为vi>0,背包的容量为c。问应如何选择装入背包中的物品,使得装入背包中物品的总价值最大? (要求使用回溯法)算法分析【整体思路】01背包属于找最优解问题,用回溯法需要构造解的子集树。对于每一个物品i,对于该物品只有选与不选2个决策,总共有n个物品,可以顺序依次考虑每个物品,这样就形成了一棵解空间树: 基本思想就是遍历...原创 2020-03-28 11:27:18 · 5428 阅读 · 0 评论 -
连续邮资问题详解
假设国家发行了k种不同面值的邮票,并且规定每张信封上最多只允许贴h张邮票。连续邮资问题要求对于给定的k和h的值,给出邮票面值的最佳设计,在1张信封上可贴出从邮资1开始,增量为1的最大连续邮资区间。例如,当k=5和h=4时,面值为(1,3,11,15,32)的5种邮票可以贴出邮资的最大连续邮资区间是1到70。(UVA165)思路概括:用stampval来保存各个面值,用maxval来保存当...原创 2020-03-26 17:13:49 · 11915 阅读 · 3 评论