【发布时间】:2020-06-07 10:54:50
【问题描述】:
给定一个包含 N 个正整数的数组 arr[],其中元素是连续的(已排序)。此外,还有一个元素重复 X(任何变量)次数。现在,任务是找到重复的元素和重复的次数。 这是我的代码:-
import java.util.*;
import java.lang.*;
import java.io.*;
class GFG
{
public static void main (String[] args)
{
Scanner sc= new Scanner(System.in);
int t,n,i,left,rightleftid,rightid;
t=sc.nextInt();
while(t!=0){
n=sc.nextInt();
int arr[]=new int [n];
for(i=0;i<n;i++){
arr[i]=sc.nextInt();
}
left=0;right=n-1;
mid=(left+right)/2;
leftid=funcleft(arr[],n,left,right);
rightid=funcright(arr[],n,left,right);
System.out.println(arr[leftid]+" "+(rightid-leftid+1));
t--;
}
}
static int funcleft(int arr[],int n,int left,int right){
mid=(left+right)/2;
if(arr[mid]==arr[mid+1]&&arr[mid]!=arr[mid-1])
return mid;
if(arr[mid]==arr[mid-1])
return funcleft(arr[],n,left,mid-1);
if(arr[mid]-arr[0]<mid)
return funcleft(arr[],n,left,mid-1);
else
return funcleft(arr[],n,mid+1,right);
}
static int funcright(int arr[],int n,int left,int right){
mid=(left+right)/2;
if(arr[mid]==arr[mid-1]&&arr[mid]!=arr[mid+1])
return mid;
if(arr[mid]==arr[mid+1])
return funcright(arr[],n,mid+1,right);
if(arr[mid]-arr[0]<mid)
return funcleft(arr[],n,left,mid-1);
else
return funcleft(arr[],n,mid+1,right);
}
}
编译器显示一些错误
请告诉我我做错了什么我是java的初学者
【问题讨论】:
-
leftid=funcleft(arr[],n,left,right);删除[]。您在那里使用变量,而不是创建新数组。 -
我明白了,谢谢 :)
标签: java class oop object methods