力扣打卡——螺旋矩阵、旋转图像

54. 螺旋矩阵 - 力扣(LeetCode)

思路:

考虑边界,根据顺序进行

//从左到右

//从上到下

//从右到左

//从下到上

复制代码
class Solution {
    public List<Integer> spiralOrder(int[][] matrix) {
        int m=matrix.length; //行
        int n=matrix[0].length; //列
        int total=n*m;
        List<Integer> list=new ArrayList<>();
        //最左列   最右列
        int left=0;
        int right=n-1;

        //顶部   底部
        int top=0;
        int boodom=m-1;
        while(list.size()<total){
            //从左到右
            for(int j=left;j<=right && list.size()<total;j++){
                list.add(matrix[top][j]);
            }
            top++;
            
            //从上到下
            for(int i=top;i<=boodom && list.size()<total;i++){
                list.add(matrix[i][right]);
            }
            right--;
            //从右到左
            if(top<=boodom){
            for(int j=right;j>=left && list.size()<total;j--){
                list.add(matrix[boodom][j]);
            }
            boodom--;
            }
            
            //从下到上
            if(left<=right){
                for(int i=boodom;i>=top && list.size()<total;i--){
                    list.add(matrix[i][left]);
                }
                left++;
            }
        }
        return list;
    }
}

48. 旋转图像 - 力扣(LeetCode)

思路:

旋转90度公式,可以自己找规律

reversejn-i-1=matrixij;

复制代码
class Solution {
    public void rotate(int[][] matrix) {
       
       //就是一个旋转90度
         int n=matrix.length;
         int[][] reverse=new int[n][n];
         for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                reverse[j][n-i-1]=matrix[i][j];
            }
         }
         for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                matrix[i][j] = reverse[i][j];
            }
        }
    }
}
相关推荐
语戚1 小时前
力扣 3161. 块放置查询:线段树解法(Java 实现)
java·算法·leetcode·面试·线段树·力扣·
8Qi83 小时前
LeetCode 23. 合并 K 个升序链表 —— 小顶堆(PriorityQueue)
数据结构·算法·leetcode·链表·
Lsk_Smion5 小时前
力扣实训 _ [200].岛屿数量
算法·leetcode·深度优先
Lsk_Smion6 小时前
力扣实训 _ [543].二叉树的直径 _ [23].合并K个升序列表
数据结构·算法·leetcode
凯瑟琳.奥古斯特7 小时前
力扣1235:加权区间调度最优解
java·python·算法·leetcode·职场和发展
memcpy08 小时前
LeetCode 2144. 打折购买糖果的最小开销【贪心】
算法·leetcode·职场和发展
散峰而望9 小时前
【算法练习】算法练习精选:陶陶摘苹果(基础+升级)、Music Notes、字串变换,你能AC几道?
数据结构·c++·算法·leetcode·贪心算法·github·动态规划
8Qi810 小时前
LeetCode 148. 排序链表 —— 解法一:自顶向下递归(分治 + 归并)
数据结构·算法·leetcode·链表·递归·分治·归并
菜菜的顾清寒10 小时前
力扣HOT100(50)动态规划-零钱兑换
算法·leetcode·动态规划
8Qi811 小时前
LeetCode 148. 排序链表 —— 解法二:自底向上归并(迭代,O(1) 空间)
数据结构·算法·leetcode·链表·归并·迭代