LeetCode解题(20200702)

    技术2022-07-15  77

     1343. 大小为 K 且平均值大于等于阈值的子数组数目

    class Solution { public int numOfSubarrays(int[] arr, int k, int threshold) { int result = 0; for (int i = 0; i <= arr.length - k; i++) { int sum = 0; for (int j = 0; j < k; j++) { sum += arr[i + j]; } if (threshold<=sum/k){ result++; } } return result; } }

    695. 岛屿的最大面积

    class Solution { int[][] DIRS = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}}; public int maxAreaOfIsland(int[][] grid) { //首先先检查数组书否合适 if (grid == null || grid.length == 0 || grid[0].length == 0) { return 0; } int row = grid.length; int col = grid[0].length; boolean[][] visited = new boolean[row][col]; int result = 0; for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { if (grid[i][j] == 1 && !visited[i][j]) { result = Math.max(result, dfs(grid,i,j,visited)); } } } return result; } private int dfs(int[][] grid, int i, int j, boolean[][] visited) { //访问这个点 visited[i][j] = true; int area = 1; //child for (int[] DIR : DIRS) { int newRow = i + DIR[0]; int newCol = j + DIR[1]; if (checkBoundary(grid, newRow, newCol) && grid[newRow][newCol] == 1 && !visited[newRow][newCol]) { area += dfs(grid, newRow, newCol, visited); } } return area; } private boolean checkBoundary(int[][] grid, int i, int j) { int row = grid.length; int col = grid[0].length; return i >= 0 && i < row && j >= 0 && j < col; } }

    62. 不同路径

    /** * Copyright (C), 2018-2020 * FileName: uniquePaths62 * Author: xjl * Date: 2020/7/2 16:06 * Description: 62. 不同路径 */ package Graph; public class uniquePaths62 { public int uniquePaths(int m, int n) { int[][] dp = new int[m][n]; dp[0][0] = 1; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (i + 1 < m) { dp[i + 1][j] += dp[i][j]; } if (j + 1 < n) { dp[i][j + 1] += dp[i][j]; } } } return dp[m - 1][n - 1]; } }

     

    Processed: 0.014, SQL: 9