977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II
977.有序数组的平方
思路:
分别 从 数组 的 左 , 右 向 另一侧 / 中间 趋近,
新 建立 一个 数组 接收 (有序 序列) (动态 地 在 过程 中 接收 数据)
拓展 为 各个 任务 分配 工作 指针 , 形成 多指针
有序 数字 序列 ,使用 双指针 从 两侧 趋近 , 可以 有效 地 转化 为 绝对值 序列 , (从 放置 “大” 绝对值 得 位置 开始 写入 (可以 是 从右往左))
vector<int> sortedSquares(vector<int>& nums) {
int len = end(nums) - begin(nums);
int i = 0;
int j = len - 1 ;
int k = len - 1;
vector<int> TempReceive(len,0);
int Temp_Cache_Left = nums[i]*nums[i];
int Temp_Cache_Right = nums[j]*nums[j];
while(i <= j)
{
//内循环
if((Temp_Cache_Left) >= (Temp_Cache_Right) ) // 基础逻辑 与 代码 优化
{
TempReceive[k] = Temp_Cache_Left;
k--;
i++;
if(i < len) //防 溢出
{
Temp_Cache_Left = nums[i]*nums[i];
}
}
else
{
TempReceive[k] = Temp_Cache_Right;
k--;
j--;
if(j >= 0 )
{
Temp_Cache_Right = nums[j]*nums[j];
}
}
}
return TempReceive;
}
时间 吃紧 , 先把 练习 代码 贴上 , 随后 补充 细节 / 思路 , “解题” 时 的 情况 / 环境 , 总结
59.螺旋矩阵II
vector<vector<int>> generateMatrix(int n) {
// n “ 边长 ”
int count = 0;
int i = 0;
int j = 0;
int k = 0;
int len_Edge = n;
vector<vector<int>> CacheSpiralMatrix(n , vector<int>(n , 0));
//内循环
// 注意 螺旋 矩阵 的 结构
// 区分 奇偶 情况
if((n % 2) == 0 )
{
while(len_Edge > 0)
{
for(k = 0 ; k < (len_Edge-1) ; k++ )
{
count++;
CacheSpiralMatrix[i][j] = count;
j++;
}
for(k = 0 ; k < (len_Edge-1) ; k++ )
{
count++;
CacheSpiralMatrix[i][j] = count;
i++;
}
for(k = 0 ; k < (len_Edge-1) ; k++ )
{
count++;
CacheSpiralMatrix[i][j] = count;
j--;
}
for(k = 0 ; k < (len_Edge-1) ; k++ )
{
count++;
CacheSpiralMatrix[i][j] = count;
i--;
}
i++;
j++;
len_Edge -= 2 ; //len_Edge = len_Edge - 2;
}
}
else
{
while(len_Edge > 1)
{
for(k = 0 ; k < (len_Edge-1) ; k++ )
{
count++;
CacheSpiralMatrix[i][j] = count;
j++;
}
for(k = 0 ; k < (len_Edge-1) ; k++ )
{
count++;
CacheSpiralMatrix[i][j] = count;
i++;
}
for(k = 0 ; k < (len_Edge-1) ; k++ )
{
count++;
CacheSpiralMatrix[i][j] = count;
j--;
}
for(k = 0 ; k < (len_Edge-1) ; k++ )
{
count++;
CacheSpiralMatrix[i][j] = count;
i--;
}
i++;
j++;
len_Edge -= 2 ; //len_Edge = len_Edge - 2;
}
// “ len_Edge == 1 时 ”
count++;
CacheSpiralMatrix[i][j] = count;
}
return CacheSpiralMatrix;
}
标签:977,count,CacheSpiralMatrix,59,++,len,int,Edge,数组 From: https://www.cnblogs.com/brinisky/p/17870688.html