题目:
给定一个数组,如 [3,3,4,5,6,7,8,9,9,4,3,5,6,7,8,1,0]
请组成如下图形后取值每行的最后一个数
3
345
67899
4356781
0
既,需要将目标数组按照1、3、5、7...等差数列分行,如有余数,直接插入
解题思路:
循环遍历目标数组,记录每行的数据,按需换行取值
func superposition(list []int) (nums []int) {
// 定义一个标签记录当前行的长度
target := 1
// 生命一个list存储当前行的数据
var temp []int
// 开始遍历目标数组
for i := 0; i < len(list); i++ {
// 如果当前行中的数据达到目标长度
if len(temp) == target {
// 将当前行最后一个值追加到结果数组中
nums = append(nums, temp[target-1])
// 当前行list置空
temp = []int{}
// 当前行长度加2
target = target + 2
// 由于target已经达到目标长度,所以需要重新执行本次循环的数据
i--
} else {
// 如果当前数是目标list的最后一个值,则直接将该值追加到结果中,并结束
if i == len(list)-1 {
nums = append(nums, list[i])
return
}
// 将结果追加到当前行数组中
temp = append(temp, list[i])
}
}
return
}