python - 88. Merge Sorted Array
天蓬老师
天蓬老师 2017-04-18 09:34:30
0
2
812
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

모든 응답 (2)
小葫芦

저는 실제로 이 질문을 한 것이 아닙니다. 저는 그가 의미하는 바를 추측하여 다음 코드를 작성했습니다. 읽고 나면 문제를 이해해야 합니다.

간단한 테스트

으아악

결과:

으아악

설명

이 질문은 Python에는 그다지 적합하지 않습니다(leetcode의 많은 데이터 구조 질문에는 이 문제가 있습니다). 원래 질문은 배열에 대해 이야기하지만 여기서 다루는 것은 목록입니다. Python의 목록은 실제로 배열과 더 유사합니다. 아직은 약간의 차이가 있습니다.

제목에서 알 수 있듯이nums1의 길이는m+n부터 시작됩니다. 이는 불분명한 이유 때문일 수 있습니다.mm+n의 길이를 나타냅니다.nums1( 공백)이므로 제 예에서는 의미 없는 숫자를 나타내지만 공백의 존재를 강조하기 위해 0을 사용했습니다.

병합1

첫 번째 방법nums1[m:] = nums2[:n]nums2의 처음 n개 요소(유효 요소)를nums1공간의 후반부(m+1번째 위치부터)에 채우고, 마지막으로 최종 답변이 우리가 원하는 것이 되도록 정렬하세요.

병합2

두 번째 방법은 언뜻 보면 첫 번째 방법과 동일해 보이지만, 이 질문에 사용될 수 있는 입력 데이터의 측면에서는 실제로는nums1이후 남은 공간을 사용하지 않게 됩니다.nums2의 각 요소는append을 사용하여 새로운 공백을 추가하므로nums1의 길이(공백)가 변경됩니다.

병합3

이 접근 방식의 문제점은 두 번째 접근 방식과 동일하지만 더 심각한 것은nums1 + nums2이 변경 사항이 최종적으로nums1에 할당되어 있지 않기 때문에 새로운 개체를 생성한다는 것입니다. , 이 변수는 더 이상 원본nums1을 참조하지 않으며, 원본nums1은 전혀 영향을 받지 않습니다.

질문을 정확하게 이해하시고 궁금증을 해소하시길 바랍니다!


내가 답변한 질문: Python-QA

    小葫芦

    질문의 의미를 잘못 이해하셨을 수도 있습니다

    You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2.

    이 프롬프트는len(nums1) >= m + n을 의미합니다. 특히 nums1의 첫 번째 m 항목과 nums2의 마지막 n 항목을 새 배열(목록)로 병합하고 정렬해야 합니다(nums1의 요소 수m + n)

    그래서 당신의 해결책은 정말 틀렸습니다

    PS: 제가 영어가 서툴러서인지 원래 이 질문을 한 외국인이 좀 불분명한지는 잘 모르겠습니다. 표준 답변의 의도는 한 목록의 첫 번째 m 항목과 마지막 n 항목을 병합하는 것입니다. 다른 목록을 새 목록으로 정렬하고, 질문의 의미는 분명히 두 목록을 병합하는 것입니다. 囧

      최신 다운로드
      더>
      웹 효과
      웹사이트 소스 코드
      웹사이트 자료
      프론트엔드 템플릿
      회사 소개 부인 성명 Sitemap
      PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!