gpt4 book ai didi

java - 给定一个整数数组作为输入,如果数组已排序则返回 true。请注意,数组可以按升序或降序排序

转载 作者:行者123 更新时间:2023-11-30 06:13:02 24 4
gpt4 key购买 nike

示例输入#1

isSorted([1,3,5,7})

示例输出#1

true

示例输入#2

isSorted({11,9,2,-5})

示例输出#2

true

示例输入#3

isSorted({1,2,3,4,-1,-2})

public boolean isSorted(int[] arr){

boolean isSorted = false;
if(arr.length==1)
return true;

for(int i=0;i<arr.length-1;i++)
{

if(arr[i]<arr[i+1])
{
isSorted = true;
}
else if(arr[i]>arr[i+1])
{
isSorted = true;
}
else
isSorted = false;

if(isSorted != true)
return isSorted;
}
return isSorted;
}

我的代码发生了什么,我的一些测试用例没有通过参数 '{24,27,30,31,34,37,40,42}' 通过参数 '{1,3,5,7,4}' 失败

最佳答案

您正在尝试使用单个 boolean 变量来保存两位信息,但这是行不通的。这里需要两个 boolean - 一个表示数组按升序排序,另一个表示数组按降序排序。

准备两个变量,isAscending = trueisDescending = true。按照您现在的方式遍历数组,如果检测到反转,则将相应的变量设置为 false。永远不要再将这些变量设置为 true,因为一次反转会破坏排序顺序。

if (arr[i]<arr[i+1]) isDescending = false;
if (arr[i]>arr[i+1]) isAscending = false;

这就是您需要做的全部。一旦循环结束,isAscending || isDescending 表达式给你答案。

要加快退出 for 循环,请使用此终止条件:

i<arr.length-1 && (isAscending || isDescending)

关于java - 给定一个整数数组作为输入,如果数组已排序则返回 true。请注意,数组可以按升序或降序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32214284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com