[LC] 88 표제 병합 정렬 된 배열 (두 순서 배열을 병합)

① 영어 제목

두 개의 정렬 된 정수 배열 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 }

 

추천

출처www.cnblogs.com/zf007/p/11520760.html