정렬되지 않은 배열이 있습니다. 이 배열의 대부분의 숫자는 연속적이며 (1, 2, 3, 4, 5, ...) 때로는 나머지 숫자보다 높은 숫자가 있습니다.C# : 숫자의 배열을 반복하고 하나의 배열에 연속 숫자를 넣고 다른 배열의 다른 숫자는 모두
int highestNumber = int.MinValue;
int secondHighestNumber = int.MinValue;
int[] arr = new int[] { 1, 2, 3, 4, 5, 6, 1207, 7, 8, 9, 1803, 10, 11, , 9000, 9001 };
int counter = 0;
foreach (int number in arr) {
if (number > highestNumber) {
secondHighestNumber = highestNumber;
highestNumber = number;
}
else if (number > secondHighestNumber) secondHighestNumber = number;
}
코드를 실행하면 9001이 가장 높은 숫자이고 9000이 두 번째로 높다고 나옵니다. 하지만 모든 숫자가 1에서 11까지 배열이되도록 변경하고자합니다. 모든 연속 숫자 은 하나의 차이가이고 더 큰 숫자는 두 번째 배열 인 1207, 1803, 9000 및 9001.
9000 및 9001은 첫 번째 배열에 있으면 안됩니다.이 숫자와 나머지 사이의 차이가 너무 높기 때문입니다. 그래서 최종 결과는 다음과 같아야합니다
int[] arr1 = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
int[] arr2 = new int[] { 1207, 1803, 9000, 9001 };
이의 목적이 무엇인지에 대한 몇 가지 배경 정보 :
효율적인 기사를 작성하고 각 기사가 무엇을 가장 높은 문서 번호를 찾고에 의해 생성되는 문서 번호가 있습니다 지금까지 "기사"테이블에 있습니다 (예 : 20), 새 기사의 번호는 해당 숫자 + 1 (예 : 21)입니다. 따라서 숫자 당 증분. 그러나 고객은 때때로 기사를 추가하고 기사에 원하는 기사 번호를 입력 할 수 있기를 원하므로 마지막으로 작성한 기사에 기사 번호로 7000을 입력했다고 가정 해 봅시다. 그 다음에 그는 그 다음에 다른 기사를 작성하면 계속 증가하는 숫자 목록을 가지고 계속해야합니다. 따라서 고객이 다음 기사의 가치를 다시 변경하지 않는 한 다음 새 기사의 기사 수는 22 개 (7001 제외) 여야합니다.
나는 지금 당분간 이것을 알아 내려고 노력하면서 어떤 도움을 주시면 감사하겠습니다.
정렬 한 다음 처음부터 시작하십시오. –
@ ThomasWeller 그러나 코드는 9001을 가장 높게, 9000을 두 번째로 높게 반환합니다. – Magali
'arr.Select (i => i + 1). 예외 (arr) .Min()' – PetSerAl