LeetCode - #88 두 개의 정렬된 배열 병합

계속 만들고 성장을 가속화하십시오! "너겟 데일리 뉴플랜 · 6월 업데이트 챌린지" 참여 4일차 입니다 . 이벤트 상세보기 클릭

머리말

우리 커뮤니티는 Gu Yi( Netflix 성장 해커, "The Way of the iOS 인터뷰" 저자, ACE 전문 피트니스 코치 )의 Swift 알고리즘 문제 솔루션을 모든 사람이 배우고 읽을 수 있도록 텍스트 버전으로 구성합니다.

지금까지 LeetCode 알고리즘을 86개 문제로 업데이트했으며, 업데이트 시간과 진행 상황( 월, 수, 금 오전 9시 공개)을 유지 하며, 큰 개선이 있을 것입니다.

작은 걸음이 쌓이지 않으면 천 마일도 갈 수 없고, 작은 시냇물이 쌓이지 않으면 강이 될 수 없습니다. Swift 커뮤니티가 함께 합니다. 제안 및 의견이 있는 경우 기사 끝에 메시지를 남겨주세요. 귀하의 요구 사항을 충족하기 위해 최선을 다할 것입니다.

난이도: 쉬움

1. 설명

내림차순으로 두 개의 정수 배열 sum 제공 되고 및 의 요소 수를 나타내는 두 개의 다른 정수 sum 이 제공됩니다.nums1nums2mnnums1nums2

nums2병합 nums1된 배열도 내림차순 하십시오 .

참고: 궁극적으로 병합된 배열은 함수에서 반환되지 않고 nums1배열 . 이 상황에 대처하기 위해 nums1의 초기 길이는 이며 첫 번째m + n 요소는 병합되어야 하는 요소를 나타내고 마지막 요소는 이며 무시해야 합니다. 길이는 입니다.mn0nums2n

2. 예

실시예 1

输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
输出:[1,2,2,3,5,6]
解释:需要合并 [1,2,3] 和 [2,5,6] 。
合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。
复制代码

실시예 2

输入:nums1 = [1], m = 1, nums2 = [], n = 0
输出:[1]
解释:需要合并 [1] 和 [] 。
合并结果是 [1] 。
复制代码

실시예 3

输入:nums1 = [0], m = 0, nums2 = [1], n = 1
输出:[1]
解释:需要合并的数组是 [] 和 [1] 。
合并结果是 [1] 。
注意,因为 m = 0 ,所以 nums1 中没有元素。nums1 中仅存的 0 仅仅是为了确保合并结果可以顺利存放到 nums1 中。
复制代码

제한:

  • nums1.length == m + n
  • nums2.length == n
  • 0 <= m, n <= 200
  • 1 <= m + n <= 200
  • -10^9 <= nums1[i], nums2[j] <= 10^9

3. 답변

 class MergeSortedArray {
    func merge(_ nums1: inout [Int], _ m: Int, _ nums2: [Int], _ n: Int) {
        var i = m - 1, j = n - 1
        
        while i >= 0 || j >= 0 {
            if j < 0 || (i >= 0 && nums1[i] > nums2[j]) {
                nums1[i + j + 1] = nums1[i]
                i -= 1
            } else {
                nums1[i + j + 1] = nums2[j]
                j -= 1
            }
        }
    }
}
复制代码
  • 주요 아이디어: 덮어쓰기를 방지하기 위해 끝에서 끝까지 병합합니다.
  • 시간 복잡도: O(n)
  • 공간 복잡도: O(1)

알고리즘 솔루션을 위한 저장소: LeetCode-Swift

클릭하면 LeetCode 실습 으로 이동합니다.

우리에 대해

Swift 매니아들이 공동으로 관리하고 있으며, Swift 전투, SwiftUI, Swift 기반을 중심으로 기술적인 내용을 공유하고, 우수한 학습 자료도 정리하여 수집합니다.

рекомендация

отjuejin.im/post/7102734653479469064
рекомендация