最大公约数遍历
Posted 929code
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最大公约数遍历相关的知识,希望对你有一定的参考价值。
两个数的最大公因数大于一时,表示两个数连通
给一个数组,判断该数组是否全连通
1. 并查集
通过质因数间接合并数组中所有数
JAVA用迭代的思想,不遍历,找出数组中的最大值
现在java8中的stream的IntStream可以方便找到数组中的最大值,而且现在stream已经把遍历内置到了jdk中,代码更整洁
通过把int数组直接转化为IntStream,然后再用内置的max方法直接求得最大值即可
示例代码如下:
int[] arr = 2,53,67,33,12,90,49;System.out.println(IntStream.of(arr).max().getAsInt());
运行结果
java8的新特性stream(流)处理集合增加更多便利,同时提升了运算的效率,可以说是优雅的编程形式,把循环内置到了jdk中,只暴露了你想要什么,这种已经都是声明式编程,不再是以往的命令式编程了
想了解更多的关于stream的知识,可以去看看这篇文章
http://www.ibm.com/developerworks/cn/java/j-lo-java8streamapi/
参考技术A public class FindMaxNumpublic static void main(String[] args)
int ary[] = 6, 6, 8, 9, 10 ;
int a = ary[0];
System.out.println(getMaxNum(ary, a));
public static int getMaxNum(int src[], int a)
if (src.length == 0)
return -1;
if (src.length == 1)
if (src[0] < a)
return a;
else
return src[0];
if (a < src[0])
a = src[0];
int length = src.length;
int des[] = new int[length - 1];
System.arraycopy(src, 1, des, 0, length - 1);
int maxNum = getMaxNum(des, a);
return maxNum;
少了一个判断,我用递归迭代,没次移走一个数,不符合你要求?本回答被提问者和网友采纳 参考技术B public static int findMax(int[] nums, int i)
if (i == 0) return nums[0];
return Math.max(nums[i], findMax(nums,i - 1));
public static void main(String[] args)
int[] nums = 1,2,3,4,5;
System.out.println(findMax(nums,nums.length - 1));
参考技术C 请问为什么IntStream编译说找不到符合 参考技术D 数组不是有个排序方法么 Arrays.sort(ia);
不过方法的内部实现是不是遍历我就不知道了,
最后直接打印最后一个数组元素就好了,ia[i], i = ia.length-1
以上是关于最大公约数遍历的主要内容,如果未能解决你的问题,请参考以下文章