2014-01-29 2 views
0

간단한 방법이 있는지 묻는 중입니다. 즉, 2 개의 연속적인 셀을 다른 값을 가진 하나의 셀로 대체.어레이의 두 개의 연속 셀을 하나의 셀로 교체하십시오.

예 : 내 배열 = [0,3,1,2,3,4] 인 경우 색인 0을 대체하고 1을 값 5 으로 바꾸려면이 배열 = [5, 1,2,3,4]

사람들은이 작업을 수행하는 간단한 방법을 제안 할 수 있습니까? 나는이 코드를 수행하지만, 뭔가 문제가있다 :

int J = 0; 
      if (max != 1) 
      { 
       for (int iii = 0; iii < output.Length -1; iii++) 
        { 
         if ((output[iii] == imax) && (output[iii + 1] == jmax)) 
         { 
          temp = temp + 1; 
          output[J] = Convert.ToByte(temp); 
          J = J + 1; 
          iii = iii + 1; 
         } 
         else 
         { 
          output[J] = output[iii]; 
          J = J + 1; 
          output[J] = output[iii + 1]; 
         } 

        } 
      } 

i가 2 연속 인덱스를 확인하고자 할 때, 내가 꽃밥이 인덱스

+1

간단한 방법은 그들을 –

답변

0

당신은 perfor 해를 끼칠 수있는 작은 작업을 수행 할 불량배. 이 단지 코드

array = array.ReplaceConsecutiveCells(0, 5); 
0
int[] array = new int[] { 0, 3, 1, 2, 3, 4 }; 
List<int> list = array.ToList(); 
list.RemoveRange(0,2); 
list.Insert(0, 5); 
array = list.ToArray(); 
0

또 다른 변형

에게 전달하려는 때문에 성능에 대해 걱정하는 경우
int[] array = new int[] { 0, 3, 1, 2, 3, 4 }; 
Array.Reverse(array); 
Array.Resize(ref array, 5); 
Array.Reverse(array); 
array[0] = 5; 
0
do 
     { 
      RNG_NXT =RNG +1; 
     for (int iii = 0; iii <Nold -1; iii++) 
        { 
         if ((output[iii] == imax) && (output[iii + 1] == jmax)) 
         { 
          output[J] = Convert.ToByte(RNG_NXT); 
          J = J + 1; 
          iii = iii + 1; 
         } 
         else 
         { 
          output[J] = output[iii]; 
          J = J + 1; 
         } 
        } 
      RNG++;    
     } 
while(RNG < RNG_MAX) ; 
+1

를 교체뿐만 아니라 다음 항목을 제거 할 수있는 배열이 아닌 목록을 사용하는 것입니다

public static int[] ReplaceConsecutiveCells(this int[] array, int startIndex, int replaceWith) { int[] targetArray = new int[array.Length - 1]; for (int i = 0; i < array.Length; i++) { if (i < startIndex) { targetArray[i] = array[i]; } else if (i == startIndex) { targetArray[i] = replaceWith; } else if (i == startIndex + 1) { // no action } else { targetArray[i - 1] = array[i]; } } return targetArray; } 

이처럼 사용이 확장 방법을 시도 귀하의 질문에서, 변함이 없습니다. 왜 대답으로 대답 했습니까? – hvd

+0

미안하지만, 나는 루프를 반복 할 때마다 2 개의 연속 번호를 찾는다. 반복문 – Layan

+0

아, 그래. 이 경우 귀하의 질문에 대한 답변을 볼 수는 없지만 질문에 대한 답을 찾기 어려울 수 있습니다. 더 중요하게도, 루프가 전혀 반복되지 않는 한,이 루프가 어떻게 종료되는지는 볼 수 없습니다. 루프 중에 'RNG'와 ​​'RNG_MAX'도 변경되지 않으므로 조건이 한 번 true이면 항상 계속됩니다. 진실 해. – hvd

관련 문제