
java学习
吹牛大王历险记
时间改变的是那些本就不坚定的东西
展开
-
当前序列的下一个序列(字典序算法)Java实现
当前序列的下一个序列(字典序算法)Java实现基本思路:首先说明一下,本人认为这是一种基于贪心的实现策略,思想主要分三部。1,从后向前查看逆序区域,找到逆序区域的前一位,也就是数字置换的界界。2.让逆序区域的前一位和逆序区域中大于它的最小的数字交换位置。3.把原来的逆序区域转为顺序状态。代码实现static public void next_permutation(){ int i=n-1; while(res[i-1]>=res[i]) { i--; } i--原创 2021-02-10 22:21:23 · 447 阅读 · 0 评论 -
扩展欧几里得算法Java实现
扩展欧几里得算法Java实现相对于c++来说,Java没有引入传递,因此需要我们手写一个交换函数即可。代码描述:class E_gcd{ int e_gcd(int a,int b) { if(b==0) { x=1; y=0; return a; } int gcd=e_gcd(b,a%b); swapXY(); //x y进行互换以保证结果正确 y-=a/b*x; return gcd; } void swapXY() { in原创 2021-02-05 14:34:12 · 762 阅读 · 1 评论 -
欧几里得算法(辗转相除法)--Java实现
欧几里得算法(辗转相除法)–Java实现版本一、非递归版本 static int gcd(int a,int b) { while(a%b!=0) { int tem=b; b=a%b; a=tem; } return b; }版本二、递归解法 static int gcd(int a,int b) { if(b==0) return a; return gcd(b,a%b); }...原创 2021-02-05 10:55:14 · 469 阅读 · 0 评论 -
组合数计算的几种方法
组合数计算的几种方法方法一、公式法(此方法适合n和m都很小时使用)公式:C(n,m)=C(n-1,m)+C(n-1,m-1)我们在进行计算时可以采用动态规划的方法代码描述: static long C(int n,int m) { long[] res=new long[m+1]; Arrays.fill(res, 1); for(int i=0;i<=n;i++) { for(int j=Math.min(i, m);j>=0;j--) { if(j==0原创 2021-02-04 23:19:33 · 5248 阅读 · 0 评论 -
生成区间a-b的回文数
生成区间a-b的回文数描述:给定区间a-b生成区间内的所有回文数(不考虑数据溢出)代码ArrayList<Integer> HuiwenNum(int a,int b){ int lowBit=(int)Math.log10(a)+1; int highBit=(int)Math.log10(b)+1; ArrayList<Integer> res=new ArrayList<Integer>(); //生成长度为len的回文质数 for(int原创 2021-02-03 12:22:35 · 351 阅读 · 0 评论 -
Java中double类型输出小数点后两位
Java中double类型输出小数点后两位思路就是在输出的时候使用字符串格式即可。 double testNum=1.123456789; System.out.println(String.format("%.3f", testNum));原创 2021-01-31 22:14:07 · 3156 阅读 · 0 评论 -
Java大数判断质数以及求最打公因数
Java大数判断质数以及求最打公因数质数判断static boolean isZhishu(BigInteger n) { BigInteger zero=BigInteger.ZERO; BigInteger two=new BigInteger("2"); BigInteger three=new BigInteger("3"); if(n.equals(two) || n.equals(three)) return true; BigInteger sq=n.sqrt();原创 2021-01-28 20:56:12 · 277 阅读 · 0 评论 -
Java大数类中开方
Java大数类中开方在jdk8.0中,大数类中没有开方函数,但是牛顿插值法没学过数值分析的又不太容易理解。不过,我们可以使用二分法开方,时间复杂度为O(logn),效率上也不算慢,下面我把代码放上来。代码如下说明:此代码为大数开方二分算法static BigInteger sqrt(BigInteger big) { BigInteger low=BigInteger.ZERO; BigInteger high=new BigInteger(big.toString()); BigInt原创 2021-01-28 20:46:12 · 479 阅读 · 0 评论 -
快速幂
快速幂模板第一种(最简单)//快速幂模板 (a的b次方)%c结果 int pow(int a,int b,int c) { int res=1; a=a%c; while(b!=0) { if((b&1)==1) res=(res*a)%c; a=(a*a)%c; } return res; }第二种(速度稍微快点)//快速幂模板 (a的b次方)%c结果 int pow(int a,int b,int c) { if(b==0) return 1;原创 2021-01-26 16:17:13 · 80 阅读 · 0 评论 -
Java使用正则表达式去除前导0
Java使用正则表达式去除前导0代码String s="0000000002121210"s=s.replaceAll("^(0+)", "");System.out.println(s);原创 2021-01-24 21:11:22 · 853 阅读 · 0 评论 -
java实现大数的16进制到8进制的转换
java实现大数的16进制到8进制的转换题目题目描述给定n个十六进制正整数,输出它们对应的八进制数。输入输入的第一行为一个正整数n (1<=n<=10)。接下来n行,每行一个由0到9,A到F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。输出输出n行,每行为输入对应的八进制正整数。注意输入的十六进制数不会有前导0,比如012A。 输出的八进制数也不能有前导0。实现基本思路:建表,然后将16进制转为2进制然后转为8进制代原创 2021-01-24 20:32:02 · 487 阅读 · 1 评论 -
Java中String和int类型的相互转化
String和int类型的相互转化1.int装String int num=-5; String str1=String.valueOf(num); System.out.println(str1);2.String转int String str2="-123"; int num2=Integer.valueOf(str2); System.out.println(num2);原创 2021-01-13 22:31:59 · 237 阅读 · 0 评论 -
Stream流之List、Integer[]、int[]、ArrayList<Integer>相互转化
Stream流之List、Integer[]、int[]、ArrayList相互转化Stream流之List、Integer[]、int[]相互转化文章链接补充将ArrayList转为int[]ArrayList<Integer> test=new ArrayList<Integer>();test.stream().mapToInt(Integer::valueOf).toArray();...转载 2021-01-12 23:02:00 · 839 阅读 · 0 评论 -
List的Stream流操作
List的Stream流操作Stream流Stream 中文称为 “流”,通过将集合转换为这么一种叫做 “流” 的元素序列,通过声明性方式,能够对集合中的每个元素进行一系列并行或串行的流水线操作。函数式编程带来的好处尤为明显。这种代码更多地表达了业务逻辑的意图,而不是它的实现机制。易读的代码也易于维护、更可靠、更不容易出错。** 面对一对多结构,查询主实体时需要附带主实体的子实体列表怎么写?查出主列表,循环差子列表**List的Stream流操作可以简化我们的代码,减少程序运行的压力,应对上面的问转载 2021-01-12 22:53:29 · 677 阅读 · 0 评论 -
Java8中关于map中computeIfAbsent以及getOrDefault方法简介
1.关于computelfAbsent的介绍方法原型public V computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction方法介绍如果在map中key没有映射值或者映射值为null,则将key进行映射并放到map中,并将需要映射的内容放到key所映射到的空间中。另外,如果key对应的映射内容为一个集合,那么其后面可以继续跟函数add()并将add中的内容添到key映射到的内存空间中。如果key已经映原创 2021-01-12 22:43:28 · 1087 阅读 · 0 评论 -
Java中char型数组与String类型的转换
一、char型数组转String char[] ch=new char[]{'a','b','c'}; String string=new String(); string.valueOf(ch);二、String类型转char型数组 String string =new String("abc"); char[] ch=string.toCharArray();原创 2021-01-11 21:32:56 · 1820 阅读 · 0 评论 -
java中整行读取文件的两种形式
方式1通过使用BufferRead读取文件String name="abc.txt"; //获取文件相对路径的名称 //获取文件流 //通过使用buffterReader整行读取文件 Reader reader = null; try { reader = new FileReader(name); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStac原创 2021-01-11 11:52:40 · 737 阅读 · 0 评论