2021-06-17:生成長度為size的達標陣列,什麼叫達標?達標:對於

2021-06-17:生成長度為size的達標陣列,什麼叫達標?達標:對於任意的 i

福大大 答案2921-06-17:

遞迴縮容。

[a,b,c]→[2a-1,2b-1,2c-1,2a,2b,2c]。如果[a,b,c]符合條件,那麼[2a-1,2b-1,2c-1,2a,2b,2c]也符合條件,長度擴了一倍。

[1]。長度為1。

[1,2]。長度為2。

[1,3,2,4]。長度為4。

[1,5,3,7,2,6,4,8]。長度為8。

如果size為7,從[1 5 3 7 2 6 4 8]擷取左邊7個元素就行。

程式碼用golang編寫。程式碼如下:

package mainimport “fmt”func main() { ret := makeNo(7) fmt。Println(ret)}func makeNo(size int) []int { if size == 1 { return []int{1} } // size // 一半長達標來 // 7 : 4 // 8 : 4 // [4個奇數] [3個偶] halfSize := (size + 1) / 2 base := makeNo(halfSize) // base -> 等長奇數達標來 // base -> 等長偶數達標來 ans := make([]int, size) index := 0 for ; index < halfSize; index++ { ans[index] = base[index]*2 - 1 } for i := 0; index < size; i++ { ans[index] = base[i] * 2 index++ } return ans}

執行結果如下:

2021-06-17:生成長度為size的達標陣列,什麼叫達標?達標:對於

***

[左神java程式碼](https://github。com/algorithmzuo/moonfdd/coding-for-great-offer/blob/main/src/class04/Code06_MakeNo。java)