Algorithm (Java)
深入数学奥秘,领略算法之美
Kylee Kello
不一定每个人都会失败,但也不一定每个人都运气好。怎么做是你的自由。
展开
-
Manifest - 文章清单
ManifestNo1. 等差数列的应用No2. 字符串四则运算No3. 最大公约数与最小公倍数No4. 素数 + 分解质因数No5. 将整数映射为数组No6. 字符串比较No7. 字符串匹配No8. 数组容量倍增算法 + 去重No9. 利用Stack实现进制转换No10. 数组倒置No11. List倒置、排序、多条件排序No12. 约瑟夫环No13. 堆与堆排序No14. Fabonacci数列No15. 康拓全排No16. 99乘法表No17. 循环输出A-ZN原创 2020-10-13 12:29:04 · 284 阅读 · 0 评论 -
No22. 获取指定范围内的随机数
目录Math.random用法获取1-100之间的随机数获取m~n之间的随机数double保留三位小数一:Math.random用法public static double random()返回一个 double值与一个积极的迹象,大于或等于 0.0小于 1.0。返回值与选择伪随机(大约),范围分布均匀。 二: 获取1-100之间的随机数public static int getRandom(){ return (int)(Math.random()*100)+1;}原创 2021-06-13 18:39:55 · 297 阅读 · 0 评论 -
No21. 常用的四种排序算法(无答案)
测试题:30分import java.util.Arrays;/** * 编写四种排序方法,并测试 * 1.冒泡 * 2.选择 * 3.插入 * 4.快速 */public class SortAlgorithms1 { public static void main(String[] args) { int[] arr = new int[]{7,8,5,1,2,9,4,6,3,11}; bubbleSort(arr); Syst原创 2021-04-12 10:30:35 · 173 阅读 · 0 评论 -
No20. i++/j++
测试(10分):public class T04_ComplexPlusPlus { public static void main(String[] args) { int a = 1; int b = 2; int c = 3; int d = 4; // 1-2+3+4 // int res1 = a++-b--+c+++d; // System.out.println(res1)原创 2020-11-10 21:26:32 · 278 阅读 · 0 评论 -
No19.数组最大值与最小值
import java.util.Arrays;public class T01_getMax { public static void main(String[] args) { int[] arr = new int[]{5,56,78,4,2,5,99,85}; int max = getMax(arr); System.out.println(max); int min = getMin(arr); Sys原创 2020-11-10 21:08:06 · 241 阅读 · 0 评论 -
No18. 卡特兰数(复习阶乘+斐波那契数列)
Catalan Number通项公式阶乘public class T01_Catalan { public static void main(String[] args) { for(int i=1;i<10;i++){ System.out.println(catalanNoRecursive(i)); } } private static long catalanNoRecursive(long n){原创 2020-10-13 11:59:07 · 297 阅读 · 0 评论 -
No17. 循环输出A-Z
private static void circlePrintArray() { // [1,26] -> [0,25] -> [65,90] // 1 -> 65 // 2 -> 66 // 26 -> 90 // 27 -> 65 for(int i=0;i<=100;i++){ System.out.println(i%(26)+65); }}原创 2020-10-12 08:34:59 · 425 阅读 · 0 评论 -
No16. 9x9
99乘法表测试目的:将Java知识点与Linux知识点串在一起[ Linux-Shell编程之99乘法表 ]源码:/** * 99乘法表测试 * * 注意: * 要能够在大脑中立刻写出Shell版本 * * #!/bin/bash * columns=(1 2 3 4 5 6 7 8 9) * rows=(1 2 3 4 5 6 7 8 9) * for column in ${c原创 2020-09-23 23:13:38 · 158 阅读 · 0 评论 -
No15. 康拓全排
import java.util.Arrays;public class CantoPermutation { static final int[] X = new int[]{1,1,2,6,24,120,720,5040}; public static void main(String[] args) { String[] data = new String[]{"+","-","*","/"}; for(int i=0;i<X[data.l.原创 2020-07-31 12:19:21 · 190 阅读 · 0 评论 -
No14. Fibonacci数列
获取Fabonacci数列的第N个数据:public static int getFabonacci(int n){ n-=1; if(n<0) return -1; int[] a = new int[]{1,1}; int times = n/2; int index = n%2; for(int i=0;i<times;i++){ a[0] += a[1]; a[1] += a[0]; }原创 2020-07-12 17:46:33 · 148 阅读 · 0 评论 -
No13. 堆与堆排序
Java中已经实现的大根堆和小根堆// 默认是小根堆Queue<Integer> Q1=new PriorityQueue<Integer>();// 初始化大根堆Queue<Integer> Q2=new PriorityQueue<Integer>(Collections.reverseOrder());问题:小明很想吃果子,正好果园果子熟了。在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。小明决定把所有原创 2020-07-11 00:42:00 · 270 阅读 · 0 评论 -
No12. 约瑟夫环
import java.util.LinkedList;/** * 出圈问题: * 设有n个人围坐一圈并按顺时针方向从1到n编号, 从第1个人开始进行1到m的报数,报数到第个m人,此人出圈, 再从他的下一个人重新开始1到m的报数,如此进行下去直到所剩下一人为止。 ##输入 输入多行,每行2个数,分别表示n和m. ##输出 计算每一行中最后剩下这个人的编号. ##样例输入 10 3 ##样例输出 4 * @author X * */public cla.原创 2020-07-09 17:17:56 · 217 阅读 · 0 评论 -
No11. List倒置、排序、多条件排序
List倒置:public static void main(String[] args) { List<Integer> l = new ArrayList<>(); l.add(1); l.add(5); l.add(2); l.add(8); Collections.reverse(l); l.sort((a,b)->-1); System.out.println(l);}List排序:public static void main(St原创 2020-07-09 16:06:05 · 453 阅读 · 0 评论 -
No10. Java数组倒置
方案一:// 倒置int len = arr.length;for(int i=0;i<len/2;i++){ int t = arr[i]; arr[i] = arr[len-i-1]; arr[len-i-1] = t;}方案二:int len = arr.length;for(int i=len-1,k=0;i>k;i--,k++){ int t = arr[i]; arr[i] = arr[k]; arr[k] = t;}...原创 2020-07-09 15:49:55 · 300 阅读 · 0 评论 -
No.9 Java利用Stack实现进制转换(BigInteger的使用 + BigDecimal的使用)
import java.util.Stack;/** * 将int值转换为2~16进制的数 * @author X * */public class Demo4 { public static void main(String[] args) { int N = 666; for(int i=2;i<=16;i++){ System.out.println(changeRadix(N,i)); } } public static String changeR.原创 2020-07-09 13:14:23 · 536 阅读 · 0 评论 -
No.8 Java数组容量倍增算法 + 去重
import java.util.Arrays;import java.util.Scanner;/** * Java数组容量倍增算法 + 去重 * * @author X * */public class Demo1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] a = new int[1]; int j = 0; // Ctrl+z:.原创 2020-07-09 11:02:13 · 374 阅读 · 0 评论 -
No7. 字符串匹配
注意:String类中已提供了字符串匹配的API,现模拟该API实现目录子串查询函数 查询源串中的所有子串 跳过整个子串 跳过单个字符 一、子串查询函数/** * 自定义子串查询 * String有自己的API:str.indexOf("xxx",0) * @param a 源串 * @param b 目的串 * @param index 从该参数开始查询 * @return */private static int findSubString1(Strin原创 2020-07-07 13:15:13 · 209 阅读 · 0 评论 -
No6. 字符串比较compareString
注:模拟str1.compareTo(str2)自定义 String中compareTo 配合List的sort方法使用自定义: public static int compareString(String a,String b){ int len1 = a.length(); int len2 = b.length(); //limitation int lim = Math.min(len1,len2); byte v1[] = a.getBytes(); byt原创 2020-06-02 21:12:42 · 336 阅读 · 0 评论 -
No5. 将int值(456789123)转换为[4,5,6,7,8,9,1,2,3]
问题描述:将int类型的数据映射为List集合输入描述:65535输出描述:[6 ,5, 5, 3, 5]1> 实现public static List<Integer> intMapList(int data){ LinkedList<Integer> res = new LinkedList<>(); int temp = data; int len = 0; while(temp>0){ temp/=10;..原创 2020-05-19 00:03:41 · 303 阅读 · 0 评论 -
No4. 求素数 + 分解质因数
问题描述:首先写出判断素数的方法,随后写出分解质因数的方法;☞ compose:创作☞ decompose:分解☞ prime number:素数☞ factor:因子/因素1> 实现/** * judge prime * @param a * @return true or false */public static boolean isPrime(int a){ boolean res = false; if(a==1){ return fals..原创 2020-05-18 16:34:13 · 241 阅读 · 0 评论 -
No3. 最大公约数与最小公倍数 (非递归实现)
问题描述:求两个整数a,b的最大公因数(gcd)与最小公倍数(lcm)输入描述:4 20输出描述:4 201> 问题分析辗转相除法2> 实现/** * * @param a * @param b * @return * mm[0] gcd:greatest common divisor(除数/因子) * mm[1] lcm:leatest common multiple(倍数/多种多样的) */public static in..原创 2020-05-18 16:05:03 · 307 阅读 · 0 评论 -
No2. 字符串四则运算
问题描述:给定四则运算字符串,输出运算结果输入描述:1/2*(3+(4-5))输出描述:11> 问题分析使用栈将中缀表达式转换为后缀表达式,计算后缀表达式;☞ 前缀:prefix☞ 中缀:infix☞ 后缀:postfix2> 实现中缀表达式转后缀表达式/* * 中缀转后缀 */public static LinkedLis...原创 2020-04-21 09:46:19 · 204 阅读 · 0 评论 -
No1. 等差数列的应用
问题描述:给出一个正整数N和长度L,找出一段长度大于等于L的连续非负整数,他们的和恰好为N,答案可能有多个,我我们需要找出长度最小的那个。输入描述:输入数据包括一行: 两个正整数N(1 ≤ N ≤ 1000000000),L(2 ≤ L ≤ 100)输出描述:从小到大输出这段连续非负整数,以空格分隔,行末无空格。如果没有这样的序列或者找出的序列长度大于100,则输出No...原创 2020-04-19 15:36:20 · 261 阅读 · 0 评论