题解 | #整型数组合并#
整型数组合并
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)