每日一题 【每日一题】数组之一-Python

Jack · 2021年08月16日 · 最后由 devops1987 回复于 2021年12月08日 · 142 次阅读
本帖已被设为精华帖!
  1. 问题描述: 合并两个升序的整数数组,形成一个新数组,并保持有序。
  2. 问题实例: 输入: A = [1] B = [1] 输出: [1, 1]

输入: A = [1, 2, 3, 4] B = [2, 4, 5, 6] 输出: [1, 2, 2, 3, 4, 4, 5, 6]

Jack 将本帖设为了精华贴 08月16日 21:08
a = [1, 2, 3, 4]
b = [2, 3, 4, 5]
c = a + b
c.sort()
print(c)

可以尝试抽象一下。

参考代码:

class Solution:
    def mergeSortedArray(self, A, B):
        i, j = 0, 0 
        C = []
        while i < len(A) and j < len(B):
            if A[i] < B[j]:
                C.append(A[i])
                i += 1
            else:
                C.append(B[j])
                j += 1
        while i < len(A):
            C.append(A[i])
            i += 1
        while j < len(B):
            C.append(B[j])
            j += 1
        return C

go 语言实现

package main

import "fmt"

func sortArry(a, b []int) []int {

    var (
        aLen   = len(a)
        bLen   = len(b)
        cLen   = aLen + bLen
        arrC   = make([]int, cLen)
        aIndex = 0
        bIndex = 0
        cIndex = 0
    )

    for aIndex < aLen && bIndex < bLen {
        // 循环对比数组的大小
        if a[aIndex] < b[bIndex] {
            arrC[cIndex] = a[aIndex]
            cIndex++
            aIndex++
        } else {
            arrC[cIndex] = b[bIndex]
            cIndex++
            bIndex++
        }
    }

    // 取出数组中剩余的值
    for aIndex < aLen {
        arrC[cIndex] = a[aIndex]
        cIndex++
        aIndex++
    }
    for bIndex < bLen {
        arrC[cIndex] = b[bIndex]
        cIndex++
        bIndex++
    }

    return arrC
}

func main() {
    /*
    问题描述: 合并两个升序的整数数组,形成一个新数组,并保持有序。
    问题实例: 输入: A = [1] B = [1] 输出: [1, 1]
    输入: A = [1, 2, 3, 4] B = [2, 4, 5, 6] 输出: [1, 2, 2, 3, 4, 4, 5, 6]
    */

    var (
        a = []int {1, 2, 3, 4}
        b = []int {2, 4, 5, 6}
    )
    fmt.Println(sortArry(a, b))
}

package main

import (
    "fmt"
    "sort"
)

/*
问题描述: 合并两个升序的整数数组,形成一个新数组,并保持有序。
问题实例: 输入: A = [1] B = [1] 输出: [1, 1]
输入: A = [1, 2, 3, 4] B = [2, 4, 5, 6] 输出: [1, 2, 2, 3, 4, 4, 5, 6]
*/

func sortSli(sli1, sli2 []int) []int {
    newSli := []int{}
    if len(sli1) == 0 && len(sli2) == 0 {
        fmt.Println("sli1 and sli2 is nil")
        return []int{}
    } else {
        newSli = append(newSli, sli1...)
        newSli = append(newSli, sli2...)
    }
    // sort.Sort(sort.IntSlice(newSli))
    sort.Ints(newSli)
    return newSli
}

func main() {
    sli1 := []int{1, 2, 3, 4}
    sli2 := []int{2, 4, 5, 6}
    newSli := sortSli(sli1, sli2)
    fmt.Println(newSli)
}
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册