Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按递增或递减顺序创建阵列所需的最小更改_Java_Algorithm - Fatal编程技术网

Java 按递增或递减顺序创建阵列所需的最小更改

Java 按递增或递减顺序创建阵列所需的最小更改,java,algorithm,Java,Algorithm,我有一个数组,我想找出我需要做的最小值数量,以将数组更改为递增或递减顺序 例如: a = [1,2,5,6,5,7] In above array, a[4]=5 which is less than a[3]=6. So I can add 1 to 5 to make it 6 so array becomes a=[1,2,5,6,6,7]. It is ok if I have same values consecutively. 我已经写了下面的程序,但我不确定这是否适用于所有情

我有一个数组,我想找出我需要做的最小值数量,以将数组更改为递增或递减顺序

例如:

a = [1,2,5,6,5,7] 

In above array, a[4]=5 which is less than a[3]=6. So I can add 1 to 5 to make it 6 so array becomes a=[1,2,5,6,6,7]. It is ok if I have same values consecutively.
我已经写了下面的程序,但我不确定这是否适用于所有情况

public int process(List<Integer> list) {

    int up = 0;
    int down = 0;
    for (int i = 0; i < list.size() - 1; i++) {
        int left = list.get(i);
        int right = list.get(i + 1);
        if (left > right) {
            up += left - right;
        } else {
            down += right - left;
        }
    }
    if(up < down) {
       return up;
    } else {
       return down;
    }     
}
public int进程(列表){
int up=0;
int-down=0;
对于(int i=0;i右){
向上+=左-右;
}否则{
向下+=右-左;
}
}
如果(向上<向下){
返回;
}否则{
返回下来;
}     
}

这是我的采访问题,我被告知该程序在某些情况下失败,我无法发现。因此,我想这是关于您的排序,以及该排序需要多少次迭代才能实现对数字进行排序的目标,无论是升序还是降序。你被允许使用普通种类吗?如果是这样,我会选择排序或合并排序程序。实际上,我在一个个人项目上做了这项工作,并让它计算迭代次数,以比较不同种类的速度。合并排序花了我一段时间来复制,但选择排序非常简单

每种情况都有最好和最坏的情况

编辑

我还发现:

what return slope.get()?这些是列表元素,我更新了我的问题嗯,如果我给它输入1,2,9,1,4,5,6,它会给我返回8,这似乎是错误的。@Jeutnarg,这应该是正确的。如果我最后的顺序是1,2,3,3,4,5,6。这意味着从9中减去6,再加上2到1,使总数6+2=8,这使得“我需要更改的最小值数”对我来说非常不清楚。我把它解释为需要知道列表中有多少不同的项目需要更改,而不是它们需要更改多少。链接是关于严格增加的,在我的情况下,它可以增加或减少,并且可以连续相同的值。该帖子中有多个答案,你指的是哪一个答案?所有的答案都很不错,但我想用第一个。现在你说你想看到变化的最小值。。。以什么方式改变?如果两个号码出现故障,您是否假设您只需交换两个号码?或者你会马上把不合适的号码放好。您使用的是哪种排序?在我的问题中-
在上面的数组中,a[4]=5小于a[3]=3。所以我可以把1和5相加,使它变成6,这样数组就变成了a=[1,2,5,6,6,7]。如果我连续有相同的值就可以了。
这是关于添加数字的问题没有问题,我现在明白你在做什么了!好吧,那就别担心了。。。