977.有序数值的平方
题目链接:
主要思想:双左右指针比较
public int[] SortedSquares(int[] nums)
{
int k = nums.Length - 1;
int[] results = new int[nums.Length];
for (int i = 0,j=nums.Length-1; i <= j;)
{
if (nums[i] * nums[i] <= nums[j] * nums[j])
{
results[k--] = nums[j] * nums[j];
j--;
}
else
{
results[k--] = nums[i] * nums[i];
i++;
}
}
return results;
}
59. 螺旋矩阵2
题目链接:
主要思想:主要是四个边界,先算出需要循环几次
第一个从左到右递增
第二个从上到下递增
第三个从右到左递减
第四个从下到上递减
最后如果n为基数需要为中间值赋值
public static int[][] GenerateMatrix(int n)
{
var results=new int[n][];
for (int i = 0; i < n; i++)
{
results[i] = new int[n];
}
int start= 0;
int end= n-1;
int loop = n / 2;
int index = 1;
while (loop>0)
{
for (int i=start; i < end; i++)
{
results[start][i] = index++;
}
for (int i = start; i < end; i++)
{
results[i][end]=index++;
}
for (int i = end; i >start; i--)
{
results[end][i]=index++;
}
for (int i = end; i >start; i--)
{
results[i][start]=index++;
}
start++;
end--;
loop--;
}
if (n%2==1)
{
results[n / 2][n / 2] = n * n;
}
return results;
}