有序组的平方:思路不难,创建一个新的数组,因为非递减顺序的,比较一下数组的0和len-1的平方哪个大,放到新的数组的len-1位置即可
滑动窗口,target = 7, nums = [2,3,1,2,4,3] return 2;整体思路不难,但是细节好多。找到一个窗口,把里面的数相加,大于了就缩短窗口,直到结束
i := 0
n := len(nums)
sum := 0
result := n + 1
for j := 0 ; j < n ; j++ {
sum += nums[j]
for sum >= target {
sublen := j - i + 1
if sublen < result { //只有更小的值出现才会更新结果值
result = sublen
}
sum -= nums[i]
i++
}
}
if result == n + 1 {
return 0
}else {
return result
}
}
螺旋矩阵:给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。我直接原地升天,建议先看下视频,很清晰;
如何处理边界值,如二分 ;【】左右都处理的情况下,需要注意对于边界不要重复处理,还有i++以及i–的各种操作
top , bottom := 0 , n-1
left , right := 0 , n-1
num := 1
matrix := make([][]int ,n)
tar := n * n
for i := 0 ; i < n ; i++ {
matrix[i] = make([]int, n)
}
for num <= tar {
for i :=left ; i <= right ;i ++ {
matrix[top][i] = num
num++
}
top++
for i := top ; i <=bottom ; i++ {
matrix[i][right] = num
num++
}
right--
for i :=right;i>=left;i--{
matrix[bottom][i] = num
num++
}
bottom--
for i:=bottom;i>=top;i--{
matrix[i][left] = num
num++
}
left++
}
return matrix
}```