① 영어 제목
두 개의 정렬 된 정수 배열 nums1 및 nums2을 감안할 때, 하나 개의 정렬 된 배열로 nums1에 nums2을 병합합니다.
노트 :
nums1 초기화 nums2 요소의 수는 m 및 n은 각각이다.
해당 nums1가 nums2에서 추가 요소를 보유하는 (크거나 + m에서의 N과 동일 사이즈)에 충분한 공간을 가지고지지 할 수있다.
예:
입력 :
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], N = 3
출력 : [1,2,2,3,5,6]
② 중국어 제목 :
이러한 NUM1 같은 순서 배열에 nums2의 nums1 혼입 정수와 nums2의 nums1 두 순서 배열을 감안할.
설명 :
m 및 n은 요소 nums1 nums2 횟수를 초기화.
넌 nums2의 요소를 저장하기에 충분한 공간 nums1 (m + n을 된 이상인 공간)을 가정 할 수있다.
예 :
입력 :
. nums1 = [1,2,3,0,0,0], m = 3
. nums2 = [2,5,6] N- = 3
출력 : [1,2,2,3,5,6]
③ 생각이 문제가 무엇인가를하는 것보다 더 나은의 순서를 반대로. 잘 사상은, 세 개의 변수 인덱스 난, J, NUM1에게 마지막 혼합 마지막 비트 nums2 후의 어레이의 마지막 비트를 가리키는 케이. 각 공정의 종료 후, 그것은 낮은 1을 감산한다. 그러나 아래로 이동 1을 빼는 것 인덱스에 참여에만 관심을 지불합니다.
루프 동안, i 및 j는 0 조건보다 크거나 같다. 큰 배열을 혼합 마지막에 할당 걸렸 사람들에 비해 두 배열 요소.
또한, I는 음수로 감소되었으며, j는 이전 열한 혼합 배열에 할당 된 상기 이동하지 나머지 nums2 값에 직접 할당 (즉, 더 배열 길이 nums2의 nums1 s을 초과) 추가의 긍정적 인 경우 비트.
난 그냥 혼합 한 후 배열로 nums1 넣어, 그래서 J의 난의 감소는 어떤 처리없이, 음성 또는 양성 때, 그리고 때 삭제 할 수있는 17 ~ 21 행에서 내 코드 (때문에 나는) 예를 들어 아이를 촉진하는 코드를 작성해야합니다.
④ 코드 :
1 급 솔루션 { 2 공개 공극 병합 ( INT [] nums1, INT m, INT [] nums2, INT의 N) { 3 INT I = m-1 ; 4 의 INT J = N-1 ; 5 INT의 K = m + N-1 ; 6 동안 (ⅰ> = 0 && J> = 0 ) { 7 경우 (nums1 [I]> = nums2 [J]) 8 nums1 [K - = nums1 [난 - ]; (9) 다른 10 nums1 [K - = nums2 [j-- ]; 11 } (12) 만약 (j> = 0 ) { 13 대 ( INT에서 , p <J + 1; p = 0 P ++ ) { 14 nums1 [P] = nums2 [P]; 15 } 16 } 17 // 경우 (I> 0) { 18 // 대 (INT를 p = 0; p <I + 1, P ++) { 19 // nums1 [P] = nums1 [P]; 20 // } 21 // } 22 } 23 }