java基础编程题

Posted strong-fe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java基础编程题相关的知识,希望对你有一定的参考价值。

1、给定一个二叉树,找出其最大深度。

注:二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

/**
 * Definition for a binary tree node.
 * public class TreeNode 
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x)  val = x; 
 * 
 */
class Solution 
    public int maxDepth(TreeNode root) 
                return root == null ? 0 : Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
    

 

2、给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。

技术图片

 

 解题思路:

 

class Solution 
    public int maximalRectangle(char[][] matrix) 
    if (matrix.length == 0) 
        return 0;
    
    //保存以当前数字结尾的连续 1 的个数
    int[][] width = new int[matrix.length][matrix[0].length];
    int maxArea = 0;
    //遍历每一行
    for (int row = 0; row < matrix.length; row++) 
        for (int col = 0; col < matrix[0].length; col++) 
            //更新 width
            if (matrix[row][col] == ‘1‘) 
                if (col == 0) 
                    width[row][col] = 1;
                 else 
                    width[row][col] = width[row][col - 1] + 1;
                
             else 
                width[row][col] = 0;
            
            //记录所有行中最小的数
            int minWidth = width[row][col];
            //向上扩展行
            for (int up_row = row; up_row >= 0; up_row--) 
                int height = row - up_row + 1;
                //找最小的数作为矩阵的宽
                minWidth = Math.min(minWidth, width[up_row][col]);
                //更新面积
                maxArea = Math.max(maxArea, height * minWidth);
            
        
    
    return maxArea;
    

 

以上是关于java基础编程题的主要内容,如果未能解决你的问题,请参考以下文章

java基础编程题

java基础编程题

java 编程题集

一道java基础理论题

java基础编程题

Java基础面试题总结-编程题(亲测可用)