第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將 []int 轉(zhuǎn)換為 [2]int?

如何將 []int 轉(zhuǎn)換為 [2]int?

Go
慕無忌1623718 2022-05-18 16:16:07
我有返回 [2]int 的函數(shù)。我有 slice ages[len(ages)-2:]。如何將此切片轉(zhuǎn)換為 [2]int。package mainimport (    "fmt"    "sort")func TwoOldestAges(ages []int) [2]int {    sort.Ints(ages)    return ages[len(ages)-2:]}
查看完整描述

3 回答

?
ITMISS

TA貢獻1871條經(jīng)驗 獲得超8個贊

我會做類似下面的事情;


func TwoOldestAges(ages []int) (oldest [2]int) {

    sort.Sort(sort.Reverse(sort.IntSlice(ages)))

    copy(oldest[:], ages)

    return

}

這里的工作示例


我為返回參數(shù)添加了一個名稱,這樣您就不必指定您在函數(shù)中創(chuàng)建的數(shù)組大小。由于數(shù)組的最大大小為 2,因此副本只會將前兩個結(jié)果放入數(shù)組中。因此,我們對您的年齡進行排序(按升序排序),然后將其反轉(zhuǎn),以便兩個最高的結(jié)果是前兩個鍵。


現(xiàn)在,如果您愿意,您可以更新要返回的數(shù)組的大小,而無需更新方法內(nèi)的任何內(nèi)容。


編輯: 我可能還應(yīng)該提到這也可以保護您免受超出范圍的索引的恐慌。例如,如果你只通過一個長度/容量為1的切片,如果你依賴,ages[:-2]你很可能會遇到越界恐慌:


恐慌:運行時錯誤:切片超出范圍 [:2] 容量為 1


查看完整回答
反對 回復(fù) 2022-05-18
?
慕尼黑5688855

TA貢獻1848條經(jīng)驗 獲得超2個贊

我是新手,我猜你可以創(chuàng)建一個固定大小為2的數(shù)組,然后將切片的前兩個值復(fù)制到數(shù)組中


s := []int{1, 2, 3} 

var twoElements [2]int

//copy the first two values of slice into the entirety of the array

copy(twoElements[:],s[:2]) //copy returns an int of the elements copied

從去文檔:


復(fù)制內(nèi)置函數(shù)將元素從源切片復(fù)制到目標切片。(作為一種特殊情況,它還將字節(jié)從字符串復(fù)制到字節(jié)片。)源和目標可能重疊。Copy 返回復(fù)制的元素數(shù)量,它將是 len(src) 和 len(dst) 的最小值。



查看完整回答
反對 回復(fù) 2022-05-18
?
慕容3067478

TA貢獻1773條經(jīng)驗 獲得超3個贊

Go 旨在鼓勵高效的代碼。由于排序,您的算法是 O(n log n)。更好的算法是 O(n)。


例如,O(n),


package main


import (

    "fmt"

)


func TwoOldestAges(ages []int) [2]int {

    var old [2]int

    for _, age := range ages {

        if old[0] < age {

            old[1] = old[0]

            old[0] = age

        } else if old[1] < age {

            old[1] = age

        }

    }

    return old

}


func main() {

    ages := []int{1, 99, 42, 7, 66, 77}

    fmt.Println(ages)

    oldest := TwoOldestAges(ages)

    fmt.Println(oldest)

    ages = []int{1, 77, 42, 7, 66, 99}

    fmt.Println(ages)

    oldest = TwoOldestAges(ages)

    fmt.Println(oldest)

}

游樂場: https: //play.golang.org/p/rq4SMS3MRqY


輸出:


[1 99 42 7 66 77]

[99 77]

[1 77 42 7 66 99]

[99 77]


查看完整回答
反對 回復(fù) 2022-05-18
  • 3 回答
  • 0 關(guān)注
  • 162 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號