상세 컨텐츠

본문 제목

Switch for merge array in Go

Go/Leet Code

by Gopythor 2022. 2. 24. 02:19

본문

728x90
반응형

This also works in VSCode and Go playground. I don't know also.

Maybe I need to refer another codes.

package main

import "fmt"

func main() {
    nums1 := []int{1, 2, 3, 0, 0, 0}
    nums2 := []int{2, 5, 6}
    merge(nums1, len(nums1), nums2, len(nums2))
    fmt.Println(nums1)
}

func merge(nums1 []int, m int, nums2 []int, n int) {
    temp := make([]int, 0)
    if m > n {
        i := 0
        j := 0
        for i < m {
            if j == n {
                break
            }
            switch {
            case nums1[i] == 0 && nums2[j] != 0:
                temp = append(temp, nums2[j])
                i++
                j++
            case nums1[i] == 0:
                i++
            case nums2[j] == 0 && nums1[i] != 0:
                temp = append(temp, nums1[i])
                i++
                j++
            case nums2[j] == 0:
                j++
            case nums1[i] <= nums2[j]:
                temp = append(temp, nums1[i])
                i++
            case nums1[i] > nums2[j]:
                temp = append(temp, nums2[j])
                j++
            }
        }
    } else {
        i := 0
        j := 0
        for j < n {
            if i == m {
                break
            }
            switch {
            case nums1[i] == 0 && nums2[j] != 0:
                temp = append(temp, nums2[j])
                i++
                j++
            case nums1[i] == 0:
                i++
            case nums2[j] == 0 && nums1[i] != 0:
                temp = append(temp, nums1[i])
                i++
                j++
            case nums2[j] == 0:
                j++
            case nums1[i] <= nums2[j]:
                temp = append(temp, nums1[i])
                i++
            case nums1[i] > nums2[j]:
                temp = append(temp, nums2[j])
                j++
            }
        }

    }
    for k := range temp {
        nums1[k] = temp[k]
    }

}

https://go.dev/play/p/SPYcfqYvgzQ

728x90
반응형

관련글 더보기

댓글 영역