Preguntas de pincel de estructura de datos versión básica

Yebyebi, también me deseo unas felices fiestas, y además, estudia mucho.

contenido

1. Triángulo de Yanghui

2. Reformar la matriz


1. Triángulo de Yanghui

118. Triángulo de Yang Hui - LeetCode (leetcode-cn.com) https://leetcode-cn.com/problems/pascals-triangle/submissions/

Temas y ejemplos:

Ideas para resolver problemas: (tenga en cuenta que todavía hay listas en la lista)

①La idea de conversión (piense en convertir el triángulo de Yang Hui en una matriz para pensar)

②Utilizar el contenido de la colección

 el código se muestra a continuación:

class Solution {
 public List<List<Integer>> generate(int numRows) {
        List<List<Integer>>tmp=new ArrayList<>();
        int [][]nums=new int[numRows][numRows];
        for(int i=0;i<nums.length;i++){
            List<Integer>list=new ArrayList<>();
            for(int j=0;j<=i;j++){
                if(j==0||i==j){
                    nums[i][j]=1;
                }else{
                    nums[i][j]=nums[i-1][j-1]+nums[i-1][j];
                }list.add(nums[i][j]);
            }
            tmp.add(list);
        }return tmp;
 }
}

2. Reformar la matriz

566. Reformar la matriz - LeetCode (leetcode-cn.com) https://leetcode-cn.com/problems/reshape-the-matrix/

Temas y ejemplos:

Ideas para resolver problemas: (ideas de conversión, conversión mutua de matrices unidimensionales y matrices bidimensionales) 

① Convierta una matriz bidimensional en una matriz unidimensional

②Convierta la matriz unidimensional en la matriz bidimensional requerida

a. Acerca de cómo convertir una matriz bidimensional en una matriz unidimensional

b. Análisis de este tema como ejemplo

el código se muestra a continuación:

class Solution {
    public int[][] matrixReshape(int[][] mat, int r, int c) {
   //把二维数组看做一维数组后求数组的长度
   int m=mat.length;
   //每个被看做一维数组的对应的长度
   int n=mat[0].length;
   //简单判断,若二维数组切换前后数据的数量发生了改变,那么显然是不能够进行成功切换的
   if(m*n!=r*c){
       return mat;
   }
   //创建一个新数组用来接收r行,c列的数组
   int tmp[][]=new int[r][c];
   //判断二维数组中每个数在变成一维数组后的位置
   int newposition=0;
   for(int i=0;i<r;i++){
       for(int j=0;j<c;j++){
           tmp[i][j]=mat[newposition/n][newposition%n];
           newposition++;
       }
   }return tmp;
}
}

Supongo que te gusta

Origin blog.csdn.net/weixin_58850105/article/details/123350945
Recomendado
Clasificación