简单算法归纳
收集整理一些简单的算法思维,便于后期的查找学习
橙柚007
这个作者很懒,什么都没留下…
展开
-
[经典面试题]通过不同面值的硬币,求出组合出n有多少种组合情况
通过不同面值的硬币,求出组合出n有多少种组合情况本题的一个具体情况如下给定n,求出使用给定的1,5,10,25的硬币组合出n 的组合方式有多少种第一种:迭代法思路分析:例如 15不使用10面值a. 不使用5面值 res = 1;b. 使用1个5面值 res = 1c. 使用2个5面值 res = 1;d. 使用3个5面值的 res = 1;使用一个10面值a. 不使用5面值 res = 1;b.使用一个5面值 res = 1;sum = 6由上述例原创 2022-04-20 11:21:46 · 1111 阅读 · 1 评论 -
一个小孩上楼梯,可以走 一步, 两步,三步, 问走n阶楼梯有多少种走法(Java 递归与迭代)
上楼梯有多少种走法一个小孩上楼梯,可以走 一步, 两步,三步, 问走n阶楼梯有多少种走法public class _上楼梯有多少种走法 { /** * 一个小孩上楼梯,可以走 一步, 两步,三步, 问走n阶楼梯有多少种走法 * f(1)=1; f(2)=2; f(3)=4; f(5)=7; 推出 f(n)=f(n-1)+f(n-2)+f(n-3); * @param args */ static final int mod = 1000000007; public s原创 2022-04-18 10:17:48 · 502 阅读 · 0 评论 -
求一个数组中重复出现的数字超过数组长度一半的数
第一种解法先排序,求arr[arr.length/2]的值,一定就是这个数第二种解法部分排序,求位于数组中排序在中间的一个数,快排过程中 剪枝public class _ { public static void main(String[] args) { // TODO Auto-generated method stub int[] arr = {2,4,9,7,5,6,4,3,20,23,56,0,1,1,2}; int k = selectK(arr, 0, arr.原创 2022-03-23 17:15:32 · 438 阅读 · 1 评论 -
Java 快排三指针扫描代码解说
Java三指针扫描关于快排的前两种我就不描述了,主要讲讲三指针扫描分区的思路讲解跟代码实现。主要目的:将分区过程中与主元 重复的元素 提取出来,避免后续重复比较例如[2, 4, 9, 7, 5, 6, 4, 3, 2, 2, 2 , 20, 23, 56, 0, 1, 1, 2]变为[0, 1, 1, 2, 2, 2, 2, 2, 4, 9, 7, 5, 6, 4, 3, 20, 23, 56 ]传入迭代的两个数组分别为[0, 1, 1,] 和 [4, 9, 7, 5, 6, 4, 3,原创 2022-03-19 12:22:20 · 679 阅读 · 0 评论 -
java汉诺塔递归解法(有图解)
分解步骤如下主要分为三部将A最上面的n-1个圆环移动到C上,B做辅助点将A上最后一个圆环移动到B上将C上的n-1个圆环移动到B上,A做辅助点public class _汉诺塔递归 { public static void main(String[] args) { // TODO Auto-generated method stub Hannota(3, "a", "b", "c"); } static void Hannota(int N,String from,Str原创 2022-03-10 20:08:45 · 478 阅读 · 0 评论 -
汉诺塔Python递归解法
汉诺塔解题攻略递归算法递归运用条件:(1)每次需要调用自身(2)有函数出口实现Python代码def hanoi(n, x, y, z): if n == 1: print(x, "-->", z) else: hanoi(n-1, x, y, z)#将前n-1个盘子从x移动到y上 print(x, "-->" ,z)#将x最底下的一个盘子移动到z上原创 2020-08-01 10:43:00 · 138 阅读 · 0 评论