最大公约数遍历

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 FindMaxNum
public 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

以上是关于最大公约数遍历的主要内容,如果未能解决你的问题,请参考以下文章

JAVA用迭代的思想,不遍历,找出数组中的最大值

七十七 二叉树的层次遍历和最大深度

返回二维数组子数组联通和最大

数组定义属性遍历循环,输出最大数

递归遍历指定目录,获取该目录下最大的文件信息

0130 遍历数组:数组遍历数组长度注意点求数组中的最大值等案例