java算法汇总(蓝桥常用-->自总版)(更新中...)

这里写目录标题

  • 1.递归求n的阶乘
  • 2.互质
  • 3.例题:奇妙的数字
    • 两个数字拼接
    • String.toCharArray()方法
    • String.valueOf()方法
  • 4.例题:美丽的2
    • String.contains()方法
  • 5.ASCII码---a,A,0的转换
  • 6.String[] a---->求sum+=(a[p].charAt(q))-'0';
  • 7.复数
    • BigInteger 大整数类型
      • 本题用到的方法----value.Of() ; add() ; subtract()
    • 关于BigInteger初始化为null
    • compareTo()方法 : 返回一个int型数据(1 大于; 0 等于 ; -1 小于)
  • 8.二维数组按某一列排序
  • 9.java中的Scanner 和 IO流
    • 9.1 Scanner
    • 9.2 IO流
      • BufferedReader和BufferedWriter实现快速输入输出(推荐)
  • 10.唯一分解性定理
  • 11.集合(ArrayList,HashMap,HashSet)详解+ entrySet的应用
  • 12.货物摆放例题——(求n的所有因子+foreach循环+set集合应用)
  • 参考文件

1.递归求n的阶乘

public class other_1 {public static long factorial(int n) {if(n==0) {return 1;}else {return n*factorial(n-1);}}public static void main(String[] args) {for(int i=1;i<=20;i++) {System.out.println(i+" "+factorial(i));}}
}

2.互质

  • 质数
    只能被自身和1整除的数为质数

  • 互质
    常用判断条件 : 最大公约数为1的两个数 互质

  • 求最大公约数

      假设有两个数A,B--->A=B*q+R则,我们要求的(A,B)的最大公约数 就变成了 求(B,R)的最大公约数,以此类推
    

在这里插入图片描述

3.例题:奇妙的数字

在这里插入图片描述

import java.util.ArrayList;
import java.util.Arrays;public class Main {public static void main(String[] args) {for(int i=1;i<2145;i++) {int a=i*i;int b=i*i*i;String c=a+""+b;if(s1(c)) {System.out.println(i);break;}}}public static boolean s1(String c) {char[] x=c.toCharArray();Arrays.sort(x);c=String.valueOf(x);if(c.equals("0123456789")) {return true;}return false;}}

两个数字拼接

	int a=2349;int b=69780;String c=a+""+b;sout(c);//输出结果 : 234969780

String.toCharArray()方法

  • 作用 : 将字符串(String) 转化为 字符数组
    (此题toCharArray()方法的作用是 后面需要对c进行排序,所以需要将c转化为数组形式)

      String s="729 384";char[] c=s.toCharArray();sout(c);//输出结果 : 729 384
    

String.valueOf()方法

  • 作用 : 将其他数据类型转换为String类型

      int a=74982;String s=String.valueOf(a);System.out.println("a的数据类型:"+getType(a));System.out.println("s的数据类型:"+s.getClass().getName());//对于一些基础数据类型,不能直接获取它的数据类型,可用 以下方法public static String getType(Object o) {//通过getClass() ---> java的反射机制 获取数据类型return o.getClass().getName();}//输出结果 : a的数据类型:java.lang.Integers的数据类型:java.lang.String
    

4.例题:美丽的2

在这里插入图片描述

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);//在此输入您的代码...int count=0;for(int i=1;i<=2020;i++){String s=i+"";if(s.contains("2")){count++;}}System.out.println(count);scan.close();}
}

String.contains()方法

  • 作用 : 判断该String对象中是否包含参数中的字符串

      String s="hello world";Boolean  b1=s.contains("ell");		//type=trueBoolean b2=s.contains("world");		//type=false
    

5.ASCII码—a,A,0的转换

a : 97
A : 65
0 : 48

public class Main{public static void main(String[] args) {
//		强制转换	System.out.println((char)65);	//ASystem.out.println((char)97);	//aSystem.out.println((int)'a');	//97System.out.println((int)'A');	//65//		到 '0'--->0的ASCII码是48System.out.println('A'-'0');	//65-48=17System.out.println('a'-'0');	//97-48=49}
}

6.String[] a---->求sum+=(a[p].charAt(q))-‘0’;

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);//在此输入您的代码...
//        int[][] a = new int[20+2][20+2];
//        for(int i=0;i<20;i++){
//          for(int j=0;j<20;j++){
//            a[i][j] = scan.nextInt();
//          }
//        }String[] a = {             "69859241839387868941","17615876963131759284","37347348326627483485","53671256556167864743","16121686927432329479","13547413349962773447","27979945929848824687","53776983346838791379","56493421365365717745","21924379293872611382","93919353216243561277","54296144763969257788","96233972513794732933","81443494533129939975","61171882988877593499","61216868895721348522","55485345959294726896","32124963318242554922","13593647191934272696","56436895944919899246"};int count = 0;for(int i=0;i<=15;i++){for(int j=0;j<=15;j++){int sum = 0;for(int p=i;p<i+5;p++){for(int q=j;q<j+5;q++){sum+=(a[p].charAt(q))-'0';}}count = Math.max(count,sum);}}System.out.print(count);scan.close();}
}

7.复数

a+bi
a是实部,b是虚部
在坐标轴上--->相当于a是x,b是y
  • 加减法
    实部+/-实部 ; 虚部+/-虚部

      (a+bi)+(c+di) = (a+c)+(b+d)i
    
  • 乘除法
    类似于多项式,只不过计算出的 i^2=-1

      (a+bi)(c+di)=(ac-bd)+(bc+ad)iac+adi+bci+bdi2,因为i2=-1,所以结果是(ac-bd)+(bc+ad)i
    

BigInteger 大整数类型

常用方法 : 赋值,加减乘除

本题用到的方法----value.Of() ; add() ; subtract()

  • value.Of(参数) : 将 参数 转换成指定的数据类型
BigInteger b = BigInteger.valueOf(283);
public class Main {public static void main(String[] args) {Scanner scan = new Scanner(System.in);//在此输入您的代码...int a = 42;BigInteger f = BigInteger.valueOf(a);System.out.println("f:"+f+" "+f.getClass().toString()); //output : f:42 class java.math.BigInteger
//        BigInteger t = 23480;	//不能直接这么写(jdk1.8不支持)scan.close();}
}
  • add()方法 : 大整数加法
	BigInteger a = new BigInteger("6");BigInteger b = new BigInteger("3");System.out.print("a+b="+a.add(b));//output : a+b=9
  • subtract()方法 : 大整数减法
	BigInteger c = new BigInteger("32");BigInteger d = new BigInteger("20");System.out.print("c-d="+c.subtract(d));//output : c-d=12
  • multiply()方法 : 乘法 (用法同上)
  • divide()方法 : 除法 (用法同上)

关于BigInteger初始化为null

BigInteger是Java中的一个类,用于处理大整数运算。在Java中,BigInteger的初始值是null,而不是0。当你创建一个BigInteger对象时,如果没有显式地给它赋初值,它将被默认设置为null。

这是因为BigInteger是一个引用类型,而不是基本数据类型。引用类型的默认值是null,表示该引用没有指向任何对象。

如果你想将BigInteger的初始值设置为0,你可以使用BigInteger的构造函数来实现:

BigInteger num = new BigInteger(“0”);

这样就可以将num的初始值设置为0了

compareTo()方法 : 返回一个int型数据(1 大于; 0 等于 ; -1 小于)

BigInteger.ZERO //0
BigInteger.ONE	//1
BigInteger.TEN	//10
int x = bb.compareTo(BigInteger.ZERO);
//如果 bb > 0 --->x = 1
//如果 bb = 0 --->x = 0
//如果 bb < 0 --->x = -1

8.二维数组按某一列排序

按第一列排序(Lambada表达式写法–常用) :

Arrays.sort(arrays,(o1,o2)->{if(o1[0] == o2[0]){	//如果第一列相同,则按照第二列排序return o1[1]-o2[1];}return o1[0] - o2[0];	//按照第一列排序(升序)
//	return o2[0] - o1[0];	//降序
});

如果不需要上面代码的if条件判断 , 更简洁的写法 :

Arrays.sort(arrays,Comparator.comparingInt(o->o[0]));

9.java中的Scanner 和 IO流

以下内容来自AI:

  • Scanner 更适合简单的用户输入处理,

  • 而 I/O 流则更灵活、功能更强大,适用于更复杂的输入输出操作。

      -  Answer在 I/O 流中,最常用的包括以下几种流:1. FileInputStream 和 FileOutputStream:用于处理文件输入和输出的字节流。2. DataInputStream 和 DataOutputStream:用于读写基本数据类型的字节流。3. BufferedInputStream 和 BufferedOutputStream:提供缓冲功能,可以提高读写性能的字节流。4. FileReader 和 FileWriter:用于读写字符数据的字符流。5. BufferedReader 和 BufferedWriter:提供缓冲功能,可以提高读写性能的字符流。这些流在处理文件读写时非常常用,能够满足大部分的输入输出需求。
    

9.1 Scanner

  • 使用Scanner类进行输入

//不同数据类型,使用不同的 nextXXX() 方法

public class Main{Scanner scan = new Scanner(System.in); //用于控制台从键盘输入数据int a = scan.nextInt();double b = scan.nextDouble();long c = scan.nextLong();short d = scan.nextShort();//字符串的输入String s1 = scan.next();String s2 = scan.nextLine();
}
- next() 和 nextLine()的区别next()是 从缓冲区接受字符 遇到空格后停止nextLine()是 从缓冲区接受字符,并且接受空格,遇到换行才停止,并且会自动舍弃换行。- 简单的说就是:
- next() 遇到空格就停止输入了
- nextLine()是遇到回车停止输入
- 例子如下:
	String s1 = scan.next();	//输入:sjfosiejfo jesofiString s2 = scan.nextLine();	//输入:hsefjoieo joefjefSystem.out.println(s1);		//输出:sjfosiejfoSystem.out.println(s2);		//输出:hsefjoieo joefjef
  • hasNext() 方法输入——(目前我还没用过)

//hasNext()方法—>多组输入的时候可以用它

	hasNext() 返回值是bool值- 作用:当在缓冲区内扫描到字符时,会返回true,否则会发生阻塞,等待数据输入(不会返回false)
// 每次输入三个数,输入三数之和while(scan.hasNext()) {int a = scan.nextInt();int b = scan.nextInt();int c = scan.nextInt();int sum = a+b+c;System.out.println(sum);}

在这里插入图片描述

	//还有hasNext()	//判断缓冲区中还有没有数据,有返回true,否则等待输入hasNextInt()	//判断输入的是不是int型数据,是 返回true,否则继续扫描缓冲区,或者等待输入hasNextDouble()		//判断输入的是不是double型数据,是 返回true,否则继续扫描缓冲区,或者等待输入

9.2 IO流

IO流对文件的操作主要分为字节流和字符流

  • 字符流
    字符流有两个抽象类:Writer和Reader类
    其对应子类FileWriter和FileReader可实现文件的读写操作
    BufferedWriter和BufferedReader能够提供缓冲区功能,用以提高效率。

BufferedReader和BufferedWriter实现快速输入输出(推荐)

  • BufferedReader

      BufferedReader in = new BufferedReader(new InputStreamReader(System.in);
    

常用方法:
int read() //读取单个字符
int read(char[] cbuf,int off,int len) //将字符读入数组的某一部分
String readLine() //读取一个文本行

String s = in.read();	//读入一个字符 可读入空格回车 但不抛弃回车
String s1 = in.readLine();	//读入一行 可读入空格/回车 但回车会抛弃
String s2[] = in.readLine().Split(" ");	//使用split通过空格分割读入的一行字符串,存在s2中
  • BufferedWriter

常用方法:write()

注意:write()不能直接输出int类型—》会输出对应的ASCII码

10.唯一分解性定理

!!!求n!中5的个数—》其实就是求n中5的个数 !!!
素数(素数判定 , 素数筛 , 唯一分解定理 , 约数定理)

11.集合(ArrayList,HashMap,HashSet)详解+ entrySet的应用

集合(ArrayList,HashMap,HashSet)详解+ entrySet的应用

12.货物摆放例题——(求n的所有因子+foreach循环+set集合应用)

货物摆放例题——(求n的所有因子+foreach循环+set集合应用)

参考文件

  • java 二维数组按某一列排序
  • java中BigInteger用法的详解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/781685.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sora是否能颠覆视频制作行业?一文带你了解

一个月前OpenAI宣布了一款名为Sora的新生成式人工智能系统&#xff0c;该系统可以根据文本提示生成短视频。虽然Sora尚未向公众开放&#xff0c;但迄今为止发布的高质量样本已经引起了兴奋和担忧的反应。 OpenAI发布的样本视频&#xff08;该公司称这些视频是由Sora直接制作&am…

Python学习笔记-简单案例实现多进程与多线程

Python 的多进程与多线程是并发编程的两种重要方式&#xff0c;用于提高程序的执行效率。它们各自有不同的特点和适用场景。 多进程&#xff08;Multiprocessing&#xff09; 概念&#xff1a; 多进程是指操作系统中同时运行多个程序实例&#xff0c;每个实例称为一个进程。…

表单元素使用

表单元素使用 要完成的效果:代码实现: 要完成的效果: 代码实现: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…

完整部署一套k8s-v.1.28.0版本的集群

一、系统情况 虚拟机版本&#xff1a;esxi 6.7 系统版本&#xff1a;centos7.9_2009_x86 配置&#xff1a;4核8G&#xff08;官网最低要求2核2G&#xff09; 192.168.0.137 master节点 192.168.0.139 node2节点 192.168.0.138 node1节点&#xff08;节点扩容练习&#xf…

Spring Cloud_Spring Cloud Alibaba_00000

版本选择 Spring Boot版本选择 Spring Boot github源码地址&#xff1a;https://github.com/spring-projects/spring-boot/releases/ Spring Boot github地址&#xff1a;https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Release-Notes Spring Cloud g…

DataX 源码改造支持Mysql 8.X

文章目录 DataX 源码改造支持Mysql 8.X问题背景克隆源代码并修改重新打包生产环境发布DataX 源码改造支持Mysql 8.X 问题背景 今天在使用DataX同步数据的时候遇到一个问题,报错如下 错误信息为:java.sql.SQLException: No suitable driver found for ["jdbc:mysql://…

Java-常见面试题收集(七)

十四 MySQL 1 MySQL 支持的存储引擎 MySQL 支持多种存储引擎&#xff0c;常见的有2种&#xff0c;你可以通过 show engines 命令来查看 MySQL 支持的所有存储引擎。MySQL 当前默认的存储引擎是 InnoDB。并且&#xff0c;所有的存储引擎中只有 InnoDB 是事务性存储引擎&#xf…

==和equals的区别【大白话Java面试题】

和equals的区别 大白话回答 的作用&#xff1a;   基本类型&#xff1a;比较的就是值是否相同   引用类型&#xff1a;比较的就是地址值是否相同 equals 的作用:   引用类型&#xff1a;默认情况下&#xff0c;比较的是地址值。 注&#xff1a;不过&#xff0c;我们可以…

在axios中设置方法防止http重复请求

可以在封装的 Axios 中设置方法来防止 HTTP 的重复请求。一种常见的方法是通过设置一个标识符&#xff0c;在发送请求前检查该标识符&#xff0c;如果之前已经有相同的请求正在进行&#xff0c;则取消当前请求或者等待上一个请求完成后再发送新请求。这种方式可以有效地避免重复…

CCF考级 1-8级考纲知识点

CCF考级 C 一级考纲知识内容计算机基础知识集成开发环境结构化程序设计程序的基本语句程序的基本概念基本运算基本数据类型 C 二级考纲知识内容计算机存储与网络程序设计语言流程图ASCII 编码数据类型转换多层分支/循环结构数学函数 C 三级考纲知识内容数据编码进制转换位运算算…

On Java8读书笔记

Housekeeping Unsafe programming is one of the major culprits that makes programming expensive 使用构造器确保初始化 初始化数据是一个相当重要但是常常容易忘记的事&#xff0c;但是作为一个程序员&#xff0c;你也不想跨过千山万水的Debug&#xff0c;最后与变量未初始…

P8715 [蓝桥杯 2020 省 AB2] 子串分值

一、题目描述 P8715 [蓝桥杯 2020 省 AB2] 子串分值 二、问题简析 记录字符串 s s s 的 第 i i i 个字符 s i s_i si​&#xff08; 0 ≤ i < s . s i z e 0\leq i<s.size 0≤i<s.size&#xff09;上一次出现的位置 p r e i pre_i prei​、下一次出现的位置 n…

模型部署实战:从训练到上线

目录 1.前言 2.RESTful API设计 3.使用Flask/Django开发后端服务 4.使用TensorFlow Serving部署模型 5.性能监控与服务维护要点 6.总结 1.前言 在机器学习的全周期中&#xff0c;模型部署是至关重要的一环。经过长时间的训练、验证和优化&#xff0c;当模型准备就绪时&am…

【Leetcode】top 100 栈

基础知识补充 1.栈是一种运算受限的线性表&#xff0c;仅允许在一端进行插入和删除操作&#xff1b; 2.可用列表实现&#xff0c;list.append(val) // list.pop() 题目 20 有效的括号 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的…

Linux:详解TCP报头类型

文章目录 温习序号的意义序号和确认序号报文的类型 TCP报头类型详解ACK: 确认号是否有效SYN: 请求建立连接; 我们把携带SYN标识的称为同步报文段FIN: 通知对方, 本端要关闭了PSH: 提示接收端应用程序立刻从TCP缓冲区把数据读走RST: 对方要求重新建立连接; 我们把携带RST标识的称…

如何在ArcGIS中查看栅格数据的值类型(整数或浮点数)

在 ArcGIS 中查看栅格数据的值类型&#xff08;整数或浮点数&#xff09;&#xff0c;您可以按照以下步骤操作&#xff1a; 1. **点击栅格单元格**&#xff1a; - 使用“信息”工具&#xff08;Identify Tool&#xff0c;通常是一个带放大镜和一个字母 i 的图标&#xff09…

python--os和os.path模块

>>> import os >>> #curdir #获取当前脚本的绝对路径 >>> os.curdir . >>> import os.path >>> #获取绝对路径 >>> os.path.abspath(os.curdir) C:\\Users\\GUOGUO>>> #chdir #修改当前目录 >&g…

JAVA面试大全之数据库篇

目录 1、原理和SQL 1.1、什么是事务?事务基本特性ACID? 1.2、数据库中并发一致性问题? 1.3、事务的隔离等级? 1.4、ACID靠什么保证的呢?

创建一个vue3 + ts + vite 项目

vite 官网&#xff1a; https://cn.vitejs.dev/guide/ 兼容性注意 Vite 需要 Node.js 版本 18&#xff0c;20。然而&#xff0c;有些模板需要依赖更高的 Node 版本才能正常运行&#xff0c;当你的包管理器发出警告时&#xff0c;请注意升级你的 Node 版本。 安装项目 1. 使用n…