数据结构和算法
我要成为程序猿
学习的一点小总结!
展开
-
Java数据结构和算法——动态规划做题步骤详细总结
文章目录动态规划题目类型动态规划解题步骤动态规划实例讲解硬币问题机器人路径问题青蛙跳石头问题动态规划题目类型1、计数:有多少种方式走到右下角有多少种方法选出k个数使得和为Sum2、求最大最小值:从左上角走到右下角路径的最大数字和最长上升子序列长度3、求存在性:取石子游戏,先手是否必胜能不能选出k个数使得和是Sum动态规划解题步骤1、确定状态简单的说,就是解动态规划时需要开一个数组,数组的每个元素f[i]或者f[i][j]代表什么,类似解数学题中,xyz代表什么一样,具体分为下面两个原创 2020-07-11 18:19:48 · 7344 阅读 · 6 评论 -
Java数据结构和算法——二分查找
代码如下,用了递归和迭代两种方法:package binarysearch;import java.util.ArrayList;import java.util.List;public class BinarySearch { //递归写法 public int binarySearch1(int[] arr, int findValue, int left, int right) { if (left > right) { re.原创 2020-06-13 20:05:38 · 138 阅读 · 0 评论 -
Java数据结构和算法——贪心算法
贪婪算法(贪心算法)是指在对问题进行求解时, 在每一步选择中都采取最好或者最优( 即最有利) 的选择,从而希望能够导致结果是最好或者最优的算法贪心算法最佳应用-集合覆盖:存在如下表的需要付费的广播台,以及广播台信号可以覆盖的地区。 如何选择最少的广播台,让所有的地区都可以接收到信号使用贪婪算法,效率高:目前并没有算法可以快速计算得到准备的值, 使用贪婪算法,则可以得到非常接近的解,并且效率高。选择策略上,因为需要覆盖全部地区的最小集合:、遍历所有的广播电台, 找到一个覆盖了最多未覆盖的地区的电原创 2020-06-12 15:09:53 · 157 阅读 · 0 评论 -
Java数据结构和算法——分治算法
分治法在每一层递归上都有三个步骤:分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题合并:将各个子问题的解合并为原问题的解。经典汉诺塔问题:大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着 64 片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。package hanio;p原创 2020-06-10 10:55:54 · 176 阅读 · 0 评论 -
Java数据结构和算法——动态规划
背包问题:有一个背包,容量为 4 磅 , 现有如下物品要求达到的目标为装入的背包的总价值最大,并且重量不超出要求装入的物品不能重复思路分析和图解3) 背包问题主要是指一个给定容量的背包、若干具有一定价值和重量的物品,如何选择物品放入背包使物品的价值最大。其中又分 01 背包和 完全背包(完全背包指的是:每种物品都有无限件可用)4) 这里的问题属于 01 背包,即每个物品最多放一个。而无限背包可以转化为 01 背包。5) 算法的主要思想,利用动态规划来解决。每次遍历到的第 i 个物品,根据原创 2020-06-10 10:47:43 · 126 阅读 · 0 评论 -
算法时间复杂度的理解
目录 度量一个程序(算法)执行时间的两种方法事后统计的方法事前估算的方法时间频度计算时间复杂度的方法:常见的时间复杂度平均时间复杂度和最坏时间复杂度度量一个程序(算法)执行时间的两种方法事后统计的方法这种方法可行, 但是有两个问题:一是要想对设计的算法的运行性能进行评测,需要实际运行该程序;二是所得时间的统计量依赖于计算机的硬件、软件等环境因素, 这种方式,要在同一台计算机的相同状态...转载 2020-05-12 22:20:43 · 277 阅读 · 0 评论 -
Java数据结构和算法——冒泡,选择,插入排序算法
冒泡排序:package sort;public class BubbleSort { public static void sort(int[] array){ for(int i=1;i<array.length;i++){ boolean flag = true; for(int j=0;j<arra...原创 2020-04-23 22:25:03 · 106 阅读 · 0 评论