算法练习
文章平均质量分 85
JavaCode猿
这个作者很懒,什么都没留下…
展开
-
打家劫舍(House Robber)Java动态规划入门分析二
题干你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃...原创 2018-07-29 10:12:32 · 603 阅读 · 2 评论 -
01背包模板——Java实现
当初年少,见识少,看过之后不理解,于是放弃了深入学习01背包,现在见识有一些了,特此记录一下学习后写的模板,原谅我的命名不规范(可拷贝下来自己改类名),主要是为了自己的区分。一.01背包_二维数组实现import java.util.Scanner;public class TwoChoicesOfBackpacks01背包_二维数组实现 { public static void ...原创 2019-08-18 16:37:56 · 1003 阅读 · 0 评论 -
为什么使用low + (high - low) / 2而不使用(high + low) / 2呢?
为什么使用low + (high - low) / 2而不使用(high + low) / 2呢?目的是防止溢出!为什么这样就防止溢出了呢?看下面的例子。high = 0100 0000 0000 0000 0000 0000 0000 0000 = 1073741824 low = 0100 0000 0000 0000 0000 0000 0000 0000 = 1073741824...翻译 2019-07-26 21:07:41 · 4045 阅读 · 5 评论 -
二维数组的查找/搜索二维矩阵 II/Search a 2D Matrix的广为流传的错误解法
**问题描述:**编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 2...原创 2019-07-26 16:07:14 · 169 阅读 · 0 评论 -
二叉树寻路java版-leetcode
二叉树寻路——Java版题目:在一棵无限的二叉树上,每个节点都有两个子节点,树中的节点 逐行 依次按 “之” 字形进行标记。如下图所示,在奇数行(即,第一行、第三行、第五行……)中,按从左到右的顺序进行标记;而偶数行(即,第二行、第四行、第六行……)中,按从右到左的顺序进行标记。给你树上某一个节点的标号 label,请你返回从根节点到该标号为 label 节点的路径,该路径是由途经的节...原创 2019-06-30 18:47:04 · 890 阅读 · 0 评论 -
2019 力扣杯 校园自行车分配——Java版
2. 校园自行车分配在由 2D 网格表示的校园里有 n 位工人(worker)和 m 辆自行车(bike),n <= m。所有工人和自行车的位置都用网格上的 2D 坐标表示。我们需要为每位工人分配一辆自行车。在所有可用的自行车和工人中,我们选取彼此之间曼哈顿距离最短的工人自行车对 (worker, bike) ,并将其中的自行车分配給工人。如果有多个 (worker, bike) 对之...原创 2019-04-17 21:24:23 · 1267 阅读 · 0 评论 -
dijkstra算法为什么不能计算负权重?
这几天在看迪杰斯特拉算法(dijkstra算法)的时候,了解到这个算法不能够计算负权重,这让我很纳闷???为什么呢???下面我按照我理解的解释一番,若有错误希望阅读者能够评论指出,不胜感激。我们看上图,求A到其他节点的最短路径: 首先得出A -> B = 1,A -> C = 0,A -> D = 99,然后将A被标记访问过。接着找B到其他节点的距离,看看能不能更新...原创 2019-04-21 18:21:28 · 12573 阅读 · 11 评论 -
2019 第十届蓝桥杯Java省赛B组个人题解
2019 第十届蓝桥杯Java省赛B组个人题解前言 以下的第十届蓝桥杯Java B组省赛的题目题解只是我个人的题解,提供一些解题思路,仅作参考,如有错误,望大家指出,不甚感激,我会及时更改。 本来想上传到CSDN上免费下载,上传之后发现默认是5积分,后来了解到现在的CSDN向知识付费靠拢,激励用户上传资源,取消了用户自行定价的功能。 2019 第十届蓝桥杯Java省赛B组题目——CS...原创 2019-04-01 17:54:12 · 22525 阅读 · 97 评论 -
蓝桥杯——特殊回文数
蓝桥杯——特殊回文数问题描述123321是一个非常特殊的数,它从左边读和从右边读是一样的。输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。输入格式输入一行,包含一个正整数n。输出格式按从小到大的顺序输出满足条件的整数,每个整数占一行。样例输入52样例输出899998989989998899数据规模和约定1<=n<...原创 2019-03-19 11:13:38 · 2076 阅读 · 2 评论 -
剪绳子(CutRope) Java动态规划入门分析三
题干给定一根长度为n的绳子,请把绳子剪成m段(m、n都是整数,n&amp;gt;1并且m&amp;gt;1),每段绳子的长度记为k[0],k[1],…,k[m]。请问k[0]* k[1] * … *k[m]可能的最大乘积是多少? 示例1: 输入:8 输出:18 解释:当绳子的长度是8时,可以把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。动态规划入门分析首先我们先做分析,当绳子长...原创 2018-07-30 20:57:27 · 1037 阅读 · 1 评论 -
使用最小花费爬楼梯(Min Cost Climbing Stairs) Java动态规划入门分析一
题干数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost[i](索引从0开始)。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例 1:输入: cost = [10, 15, 20]输出: 15解释: 最低...原创 2018-07-29 20:51:01 · 1116 阅读 · 1 评论 -
完全背包模板——Java实现
完全背包来了,嘿嘿~一.完全背包转01背包_暴力法I此方法就是枚举当前物品的数量,直至物品体积 * 数量 > 背包体积。import java.util.Scanner;public class FullBackpack完全背包转01背包_暴力法I { public static void main(String[] args) { Scanner inpu...原创 2019-08-18 16:42:21 · 429 阅读 · 0 评论