정수 배열과 구분 기호를 사용하여 배열을 분할하는 정수 구분 기호가있는 splitArrayByNum
함수를 실행해야합니다. 이 함수는 2D 배열을 반환합니다 (예 : splitArrayByNum([0,0,0,3,1,1,1], 3) -> [[0,0,0],[1,1,1]]
및 splitArrayByNum([3,1,3,3], 3) ->[[1]]
).숫자로 배열을 분할하는 함수
내 코드가 콘솔에 아무 것도 인쇄하지 않는 이유는 무엇입니까? m
을 감소하여 두 개의 조건문이 충족되지 않기 때문에
package hw3;
import java.util.Arrays;
public class ArrayUtils {
public static void p(int[][] a)
{
for (int i = 0; i < a.length; i++)
{
System.out.println(Arrays.toString(a[i]));
}
}
public static void main(String[] args)
{
int[] x1={0,0,0,3,1,1,1}; int y1=3;
splitArrayByNum(x1, y1);
p(splitArrayByNum(x1, y1));
}
public static int lastIndexOf(int value, int[] nums) {
for (int i = nums.length - 1; i >=0; i--) {
if (nums[i] == value) {
return i;
}
}
return -1;
}
public static int firstIndexOf(int value, int[] nums) {
int index = -1;
for (int i = 0; i < nums.length; i++) {
if (nums[i] == value) {
index = i;
break;
}
}
return index;
}
\\ turns the number of elements between two Extreme instances
public static int mySpan(int value, int[] nums) {
if (lastIndexOf(value, nums)==-1)
return 0;
else
return lastIndexOf(value, nums) - firstIndexOf(value, nums) + 1;
}
public static int [][] splitArrayByNum(int[]input,int number){
//finding the'm' in 'arraySplit[m][]'
int []arrayInUse=new int[input.length];
arrayInUse=Arrays.copyOfRange(input, 0, input.length);
int counter=0;
while(mySpan(number,arrayInUse)!=0)
{
int first=arrayInUse[firstIndexOf(number,arrayInUse)];
int last= arrayInUse[lastIndexOf(number,arrayInUse)];
int k=1;
int m=mySpan(number,arrayInUse);
while (m>0)
{ \\ checking for deleting sequences from the sides
if((arrayInUse[first]!=arrayInUse[first+k]) &&(arrayInUse[last]!=arrayInUse[last-k]))
continue;
if (arrayInUse[first]==arrayInUse[first+k])
m=m-1;
if(m<0)
continue;
first=first+k;
if ((arrayInUse[last])==(arrayInUse[last-k]))
m=m-2;
if(m<0)
continue;
last=last-k;
k=k+1;
}
if (m<0)
continue;
counter=counter+1;
arrayInUse=Arrays.copyOfRange(arrayInUse, first, last+1);
}
int [][]splitArray=new int[counter][];
// creating splitArray
counter=0;
arrayInUse=Arrays.copyOfRange(input, 0, input.length);
while(mySpan(number,arrayInUse)!=0)
{
int first=arrayInUse[firstIndexOf(number,arrayInUse)];
int last= arrayInUse[lastIndexOf(number,arrayInUse)];
int k=1;
int m=mySpan(number,arrayInUse);
while (m>0)
{ \\ checking for deleting sequences from the sides
if((arrayInUse[first]!=arrayInUse[first+k]) &&(arrayInUse[last]!=arrayInUse[last-k]))
continue;
if (arrayInUse[first]==arrayInUse[first+k])
m=m-1;
if(m<0)
continue;
first=first+k;
if ((arrayInUse[last])==(arrayInUse[last-k]))
m=m-2;
if(m<0)
continue;
last=last-k;
k=k+1;
}
if (m<0)
continue;
arrayInUse = Arrays.copyOfRange(arrayInUse, first+1, last+1);
splitArray[counter] = Arrays.copyOfRange(arrayInUse,first+1,firstIndexOf(number,arrayInUse));
counter = counter+1;
}
return splitArray;
}
}
"실행했을 때 코드가 응답하지 않았습니다." 평균? – Aleksandar
조금 좁혀주세요. 이것은 거의 코드 덤프입니다. – Coffee
"int [] x1 = {0,0,0,3,1,1,1}; except int y1 = 3;" [[0,0,0], [1,1,1]]을 돌려 주지만, "실행"하면 아무 것도 되돌릴 수 없습니다. – user3227