使用Java检查n值在n次出现时,该数字在给定数组中处于连续位置

使用Java检查n值在n次出现时,该数字在给定数组中处于连续位置,java,Java,问题:定义一个要压缩的数组,如果它的所有值都是正数,每个值n出现n次,并且所有相等的值都在连续位置。例如,{2,2,3,3,3}是压缩的,因为2出现两次,3出现三次。但是{2,3,2,3,3}没有打包,因为2不在连续的位置。而且{2,2,2,3,3,3}没有打包,因为2出现了三次。 编写一个名为isPacked的方法,如果其数组参数已打包,则返回1,否则返回0。您可以假定数组不是空的 如果使用Java或C#编程,则函数签名为 int isPacked(int[]a) public类已打包{ 公共

问题:定义一个要压缩的数组,如果它的所有值都是正数,每个值n出现n次,并且所有相等的值都在连续位置。例如,{2,2,3,3,3}是压缩的,因为2出现两次,3出现三次。但是{2,3,2,3,3}没有打包,因为2不在连续的位置。而且{2,2,2,3,3,3}没有打包,因为2出现了三次。 编写一个名为isPacked的方法,如果其数组参数已打包,则返回1,否则返回0。您可以假定数组不是空的

如果使用Java或C#编程,则函数签名为 int isPacked(int[]a)

public类已打包{
公共静态void main(字符串[]args){
int result=isPacked(新的int[]{2,2,1});
System.out.println(“返回:+结果”);
结果=isPacked(新的int[]{7,7,7,7,1,7,7});
System.out.println(“返回:+结果”);
}//main()
已打包的公共静态int(int[]a){

对于(inti=0;i,下面是完整的代码。 那么,这里有什么可以随便问的吗

public class Consecutive
{
/***************************************************************************/
Author :- ShihabSoft
/***************************************************************************/
public static void main(String[] someArgs)
{
int[] args=new int[someArgs.length];
    for(int i=0;i<someArgs.length;i++)
        args[i]=Integer.parseInt(someArgs[i]);
        int swit=checkArrConsecutive(args);
        if(swit==0 || swit==1)
        System.out.println("All "+args.length+" values appeared accordingly in the array");

switch(swit)
{
    case 0:
        System.out.println("Array is not well packed.");
    break;
    case 1:
        System.out.println("Array is well packed");
}
}
//As per your needs we need two functions
static int checkArrConsecutive(int[] args)
{
int curr=0,temp=0;
if(args!=null)
{
int numIndex=0;
    for(int i=0;i<args.length;i++)
    {
        curr=args[i];
        temp=0;
        if(checkNoccursNtime(args,curr)==0)
        {
            System.out.println("Sorry the number :- "+curr+" at index '"+i+"' repeats more or less than '"+curr+"' times");
            return 2;
        }

        for(int j=numIndex;j<args.length;j++)
        {
        if(temp==curr)
            break;
        if(args[j]!=curr)
        {
            return 0;
        }
        else
            temp++;

        }
        if(curr!=(args.length!=(i+1) ? args[i+1] : args[i]))
        numIndex=i+1;

    }
return 1;


}
return 0;
}
static int checkNoccursNtime(int[] args,int n)
{
if(args!=null)
{
int curr=0,temp=0;
    temp=0;
    curr=n;
    for(int j=0;j<args.length;j++)
    {
        if(args[j]==curr && temp != curr)
            temp++ ;
        else if(args[j]==curr)
            return 0;
    }
return temp==curr ? 1 : 0;
}
return 0;
}

}
公共类压缩{
/**
*@param args
*/
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
int[]a={7,7,7,7,7,7};
int tt=打包(a);
系统输出打印项次(tt);
}
私有静态int-isPacked(int[]a){
int n;
整数计数=0;
int k=0;
int初始索引;
int finalindex=0;
for(int i=0;i
Hey,Tanvir。欢迎使用stackoverflow。如果输入数组看起来像这样,您需要一个返回1的方法[2,2,3,3,4,4,4,4]或者0。可以吗?是的,这是正确的。但是我需要检查另一件事。所有数字都应该在连续的位置,比如数字是{2,3,3,3,2}然后返回0。因为最后的2不在连续的位置。但是它将为数组{2,2,3,3,1}返回1,因为所有的数字都在连续的位置。@shihabsaftfit看起来像是{5,5,4,4,1,2,2,0,0,1}你希望它返回什么1可能是或0?返回0因为a)1出现2次它应该是b)0 2次。{5,5,5,5,4,4,1,2,2}将返回1Ya ok,然后{5,5,4,4,1,2,2,0,0}这可能是我问的最后一个问题。嗨@ShihabSoft我已经检查了你的代码和它的完美。你检查连续数字的方式简直太棒了。非常感谢你给我你的时间和精力兄弟:)没关系。欢迎兄弟@Tanvir。我们在这里分享、表达和学习知识。Jz想出了另一个复杂的问题。我会我在这里帮助大家,再次欢迎来到StackOverflow,别忘了投票
public class Consecutive
{
/***************************************************************************/
Author :- ShihabSoft
/***************************************************************************/
public static void main(String[] someArgs)
{
int[] args=new int[someArgs.length];
    for(int i=0;i<someArgs.length;i++)
        args[i]=Integer.parseInt(someArgs[i]);
        int swit=checkArrConsecutive(args);
        if(swit==0 || swit==1)
        System.out.println("All "+args.length+" values appeared accordingly in the array");

switch(swit)
{
    case 0:
        System.out.println("Array is not well packed.");
    break;
    case 1:
        System.out.println("Array is well packed");
}
}
//As per your needs we need two functions
static int checkArrConsecutive(int[] args)
{
int curr=0,temp=0;
if(args!=null)
{
int numIndex=0;
    for(int i=0;i<args.length;i++)
    {
        curr=args[i];
        temp=0;
        if(checkNoccursNtime(args,curr)==0)
        {
            System.out.println("Sorry the number :- "+curr+" at index '"+i+"' repeats more or less than '"+curr+"' times");
            return 2;
        }

        for(int j=numIndex;j<args.length;j++)
        {
        if(temp==curr)
            break;
        if(args[j]!=curr)
        {
            return 0;
        }
        else
            temp++;

        }
        if(curr!=(args.length!=(i+1) ? args[i+1] : args[i]))
        numIndex=i+1;

    }
return 1;


}
return 0;
}
static int checkNoccursNtime(int[] args,int n)
{
if(args!=null)
{
int curr=0,temp=0;
    temp=0;
    curr=n;
    for(int j=0;j<args.length;j++)
    {
        if(args[j]==curr && temp != curr)
            temp++ ;
        else if(args[j]==curr)
            return 0;
    }
return temp==curr ? 1 : 0;
}
return 0;
}

}
java Consecutive 5 5 5 5 5 1 2 2 3 3 3
public class Packed {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    int[] a = { 7, 7, 7, 7, 7,7, 7 };
    int tt = isPacked(a);
    System.out.println(tt);

}

private static int isPacked(int[] a) {

    int n;
    int count = 0;
    int k = 0;
    int initialindex;
    int finalindex = 0;
    for (int i = 0; i < a.length; i++) {
        if (a[i] < 0) {
            return 0;
        }
        n = a[i];
        k = 0;
        initialindex = i;
        for (int j = 0; j < a.length; j++) {
            k++;
            if (n == a[j]) {
                i++;
                finalindex = k;
                count++;
            }
        }

        if (n != count || (finalindex - initialindex) != count) {
            return 0;
        }
        i--;
        count = 0;
    }
    return 1;
 }

}