Java 如何在一个循环中找到数组中所有对之间的最大差异
我在Java中做了一个练习,编写了一个方法(如下所示),该方法接收一个带有数字和int x的数组作为参数,如果数组中的数字对(不必按以下顺序)的绝对差值大于x,则返回true 例如,对于数组{1,5,2,18,4,2,11},我只能使用一个循环。谢谢你的帮助Java 如何在一个循环中找到数组中所有对之间的最大差异,java,arrays,loops,methods,int,Java,Arrays,Loops,Methods,Int,我在Java中做了一个练习,编写了一个方法(如下所示),该方法接收一个带有数字和int x的数组作为参数,如果数组中的数字对(不必按以下顺序)的绝对差值大于x,则返回true 例如,对于数组{1,5,2,18,4,2,11},我只能使用一个循环。谢谢你的帮助 公共布尔差分(int[]a,int x) 声明两个整数,一个整数可以是最大值,一个整数可以是最小值 使用一个循环来迭代数组 如果当前元素大于最小值,则使最小值等于当前元素 如果当前元素小于最大值,请使最大值等于当前元素 循环完成后,计算
公共布尔差分(int[]a,int x)
- 声明两个整数,一个整数可以是最大值,一个整数可以是最小值
- 使用一个循环来迭代数组
- 如果当前元素大于最小值,则使最小值等于当前元素
- 如果当前元素小于最大值,请使最大值等于当前元素
- 循环完成后,计算最小值和最大值之间的差值
- 如果差值大于X,则打印消息
- 即使是错误的实现,您仍然可以获得正确想法的分数
- 你的导师可以看到你哪里出了问题,这也是对更好的教学和你的具体学习的反馈
- 就像创建一个写文章的计划一样,对算法的注释有助于避免bug,并有助于防止您忘记代码的每一部分应该做什么。当我试图写一门新语言以及设计一种算法时,我很容易迷路
- 声明两个整数,一个整数可以是最大值,一个整数可以是最小值
- 使用一个循环来迭代数组
- 如果当前元素大于最小值,则使最小值等于当前元素
- 如果当前元素小于最大值,请使最大值等于当前元素
- 循环完成后,计算最小值和最大值之间的差值
- 如果差值大于X,则打印消息
- 即使是错误的实现,您仍然可以获得正确想法的分数
- 你的导师可以看到你哪里出了问题,这也是对更好的教学和你的具体学习的反馈
- 就像创建一个写文章的计划一样,对算法的注释有助于避免bug,并有助于防止您忘记代码的每一部分应该做什么。当我试图写一门新语言以及设计一种算法时,我很容易迷路
然后在循环结束时,将x与最大-最小值进行比较。这里有一个稍微不同的方法
public static void main(String[] args) {
int[] a = {1,2,3,4,5,6,7};
System.out.println(difference(5,a));
}
static boolean difference(int[] a, int x) {
int min = a[0];
int max = min;
for (int i = 1; i < a.length; i++) {
int v = a[i];
if (v < min) {
min = v;
} else if (v > max) {
max = v;
}
// check here since it may not be
// necessary to iterate thru all values.
if (max - min > x) {
return true;
}
}
return false;
}
publicstaticvoidmain(字符串[]args){
int[]a={1,2,3,4,5,6,7};
系统输出println(差分(5,a));
}
静态布尔差(int[]a,int x){
int min=a[0];
int max=min;
for(int i=1;i最大值){
最大值=v;
}
//检查这里,因为它可能不是
//需要遍历所有值。
如果(最大-最小>x){
返回true;
}
}
返回false;
}
它通过几种方式进行了优化
min和max的delta
,因为可能不需要迭代整个列表
max>min
,绝对值是隐式的,即使是负数这里有一个稍微不同的方法
public static void main(String[] args) {
int[] a = {1,2,3,4,5,6,7};
System.out.println(difference(5,a));
}
static boolean difference(int[] a, int x) {
int min = a[0];
int max = min;
for (int i = 1; i < a.length; i++) {
int v = a[i];
if (v < min) {
min = v;
} else if (v > max) {
max = v;
}
// check here since it may not be
// necessary to iterate thru all values.
if (max - min > x) {
return true;
}
}
return false;
}
publicstaticvoidmain(字符串[]args){
int[]a={1,2,3,4,5,6,7};
系统输出println(差分(5,a));
}
静态布尔差(int[]a,int x){
int min=a[0];
int max=min;
for(int i=1;i最大值){
最大值=v;
}
//检查这里,因为它可能不是
//需要遍历所有值。
如果(最大-最小>x){
返回true;
}
}
返回false;
}
它通过几种方式进行了优化