189.旋转数组
题目
解题思路
根据评论中的方法,利用algorithm头文件中的函数reverse,将vector先整体翻转。
再将 前 ** k % nums.size() ** 个元素进行翻转、 ** k % nums.size()+1 ~ nums.end() ** 元素进行翻转。
利用O(n)的时间复杂度完成该题目。
class Solution {
public:
void rotate(vector<int>& nums, int k) {
k = k % nums.size();
reverse(nums.begin(),nums.end());
vector<int>::iterator it = nums.begin() + k;
reverse(nums.begin(),it);
reverse(it,nums.end());
}
};
48.旋转图像
题目
解题
根据评论区大神的点拨,我选择先将矩阵沿横轴翻转,再根据正对角线进行镜面翻转,即可得到顺时针旋转90°的矩阵!
class Solution {
public:
void rotate(vector<vector<int>>& matrix) {
reverse(matrix.begin(),matrix.end());
for(int i=0;i<matrix.size();i++){
for(int j=i+1;j<matrix.size();j++){
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
};