题解 | #整型数组合并#

整型数组合并

https://www.nowcoder.com/practice/c4f11ea2c886429faf91decfaf6a310b

package main

import (
    "fmt"
    "sort"
)

func calculate(arr1 []int, arr2 []int) []int {
    var ans []int

    sort.Ints(arr1)
    sort.Ints(arr2)

    idx1, idx2 := 0, 0
    for idx1 < len(arr1) && idx2 < len(arr2) {
        var num int
        if arr1[idx1] < arr2[idx2] {
            num = arr1[idx1]
            idx1++
        } else {
            num = arr2[idx2]
            idx2++
        }

        if len(ans) > 0 && num == ans[len(ans)-1] {
            continue
        }

        ans = append(ans, num)
    }

    for idx1 < len(arr1) {
        if arr1[idx1] == ans[len(ans)-1] {
            idx1++
            continue
        }
        ans = append(ans, arr1[idx1])
        idx1++
    }

    for idx2 < len(arr2) {
        if arr2[idx2] == ans[len(ans)-1] {
            idx2++
            continue
        }
        ans = append(ans, arr2[idx2])
        idx2++
    }

    return ans
}

func main() {
    var m int
    fmt.Scan(&m)

    var arr1 []int
    for i:=0; i<m; i++ {
        var num int
        fmt.Scan(&num)
        arr1 = append(arr1, num)
    }

    var n int
    fmt.Scan(&n)
    var arr2 []int
    for i:=0; i<n; i++ {
        var num int
        fmt.Scan(&num)
        arr2 = append(arr2, num)
    }

    ans := calculate(arr1, arr2)

    for _, num := range ans {
        fmt.Printf("%d", num)
    }
}
// 本题输入多行整形数字,所以采用:fmt.Scan(&n)

全部评论

相关推荐

05-05 21:45
已编辑
广州大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务