할당은 int 배열에서 두 번째로 큰 짝수 int를 찾는 메서드를 만드는 것입니다. 모든 라이브러리의 메소드를 사용하는 것이 제한되어 있습니다.배열에서 두 번째로 큰 짝수 int를 찾는 효율적인 방법
가 methodI를 호출하는public static int getSecondLargestEven(int[] ary) {
int i;
aryLength = ary.length;
int largestEven = -1;
int secondLargestEven = -1;
for (i = 0; i < aryLength; i++) {
if (ary[i] % 2 == 0) {
if (ary[i] > largestEven) {
if (largestEven != -1)
secondLargestEven = largestEven;
largestEven = ary[i];
} else {
if (ary[i] != largestEven) {
if (secondLargestEven == -1 || ary[i] >= secondLargestEven) {
secondLargestEven = ary[i];
}
}
}
}
}
이전에도 다른 두 개 이상의 어떤 메서드 호출을 가지고 배열이 필요합니다
다음은 모든 경우에 작동하는 내 코드입니다. 따라서 secondLargestEven == -1 일 때 중복이 있다는 것을 알고 있습니다.목적을 달성하는 데 더 효율적인 (적은 수의 루프 사용, 적은 메모리 할당) 방법이 있습니까? 내 코드의 논리를 어떻게 향상시킬 수 있습니까? 코드 전체를 개선하려면 어떻게해야합니까? 나는 MagicNumber -1을 secondLargestEven과 largestEven에 할당하는 것이 맘에 안 든다. 기술적 인 이름으로 EVENS를 보유하고 있기 때문이다. 배열에서 유효한 짝수 정수를 secondLargestEven 및 largestEven에 할당하기 위해 루프를 사용하는 것이 효과적일까요? 그렇다면 검색을 계속 하시겠습니까? 미리 감사드립니다.
(런타임, 리소스 또는 일반 스타일/아키텍처) 개선하려는 작업 코드의 경우 [CodeReview.SE] (http://codereview.stackexchange.com/) – Ordous
코드에서 가장 잘 처리 할 수 있습니다. 코드 비록 공연이 좋지 않더라도, 공연 측면에서 보면 효율적이라고합니다.코드 우아함과 최상의 효율성은 종종 호환되지 않습니다. – Joel
@Joel 나는 점근 적 효율성이 대부분의 경우 우아함과 매우 양립 할 수 있다고 주장합니다. 이제 1 바이트를 덜 사용하면 추악한 코드가 생성 될 수 있습니다. – Ordous