给定一个整数数组,找出数组中的第三大值 .
MyApproach
样本输入#1
除去({1,2,3,4,5,0,1,2,0,0,2})
样本输出#1
{1,2,3,4,5,1,2,2}
样本输入#2
除去({0,0,1,2})
样本输出#2
{1,2}
样本输入#3
除去({0,0,0,0})
样本输出#3
{}
MyApproach
@编辑
为了找到最大数量,我对数组进行了排序并返回了最大数量 .
以下是我的代码 .
谢谢大家的支持 .
以下是我的代码:
public int thirdLargest(int[] arr)
{
for(int i=0;i<arr.length;i++)
{
int temp=0;
int large=0;
int index=0;
large=arr[i];
for(int j=i;j<arr.length;j++)
{
if(arr[j]>=large)
{
large=arr[j];
index=j;
}
}
temp=arr[i];
arr[i]=arr[index];
arr[index]=temp;
}
return arr[2];
}
2 回答
你可以这样做:
使用'{-1,-1,-1,-1,-1}'输入测试并返回-1 .
现在调整你的代码后:
原因:
remove
方法应该只删除一个最大值的事件 .您不应该从给定的数组中删除数据 . 您要求输出第三大值,因此您应该只输出而不是修改输入中的数组 . 此数组可能需要稍后使用,并且可以假设由于您只找到第三大数组,因此输入数组将保持不变 .
我会通过保持3个整数的数组来做到这一点 . 整数对应最大的3个数字,
arr[0]
是最大的,arr[1]
是第二大,arr[2]
是第三大 . 然后,循环输入中的每个数字,如果它大于3个数字中的任何一个,则将其他2个数字向下推到一个位置,然后插入新数字 .我通过运行测试了这个功能:
这给了我输出: