정수 배열 을 입력 하여 함수 하 나 를 실현 하여 이 배열 의 숫자 순 서 를 조정 합 니 다.
문제 풀이 방향: 1. 먼저 홀수 의 개 수 를 통계 합 니 다. 2. 원시 배열 을 편리 하 게 합 니 다. 홀수 라면 배열 array Temp [0, oddNum) 에 순서대로 놓 고 짝수 라면 배열 array Temp [oddNum, array. size) 에 놓 습 니 다. 3. array Temp 에서 당신 이 준 요 소 를 array 에 복사 합 니 다.
public class Solution {
/**
* :O(n)
* :O(n)
*
* @param array
*/
public static void reOrderArray(int[] array) {
// ,
if (array == null || array.length <= 1) {
return;
}
//
int oddNum = 0;
for (int i = 0; i < array.length; i++) {
if ((array[i] & 1) == 1) {
oddNum++;
}
}
// ,
if (oddNum == 0 || oddNum == array.length) {
return;
}
//
int[] arrayTemp = new int[array.length];
// , , arrayTemp [0,oddNum) , arrayTemp [oddNum,array.size)
int oddIndex = 0;
int evenIndex = oddNum;
for (int i = 0; i < array.length; i++) {
if ((array[i] & 1) == 1) {
arrayTemp[oddIndex++] = array[i];
} else {
arrayTemp[evenIndex++] = array[i];
}
}
System.arraycopy(arrayTemp, 0, array, 0, array.length);
}
public static void main(String[] args) {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
reOrderArray(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
/**
* :O(n^2)
* :O(1)
*
* @param array
*/
public static void reOrderArray_(int[] array) {
if (array == null || array.length <= 1) {
return;
}
// ,
for (int i = 0; i < array.length; i++) {
for (int j = array.length - 1; j > i; j--) {
//
if ((array[j] & 1) == 1 && (array[j - 1] & 1) == 0) {
int temp = array[j];
array[j] = array[j - 1];
array[j - 1] = temp;
}
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
\ # 데이터 구조 와 알고리즘 학습 노트 \ # 검 지 제공 42: 단어 순 서 를 뒤 집기 + 테스트 사례 (자바, C / C +)2019.1.2 검 지 Offer 는 제로 브러시 개인 노트 정리 (66 문제 전) 디 렉 터 리 전송 문 에서 인터넷 에 서 는 원 서 를 포함 한 많은 방법 이 문장 을 두 번 뒤 집 는 것 이다. 첫 번...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.