春招学习第二天(2/30)
Java的8种基本数据类型
起因是今天加一个群问JAVA有多少种基本类型,我只记得有8种但就是答不全……人傻了。看来自己的基础还有待加强啊。
关于Java的8种基本数据类型,其名称、位数、默认值、取值范围及示例如下表所示:
序号 | 数据类型 | 位数 | 默认值 | 取值范围 | 举例说明 |
---|---|---|---|---|---|
1 | byte(位) | 8 | 0 | -2^7 - 2^7-1 | byte b = 10; |
2 | short(短整数) | 16 | 0 | -2^15 - 2^15-1 | short s = 10; |
3 | int(整数) | 32 | 0 | -2^31 - 2^31-1 | int i = 10; |
4 | long(长整数) | 64 | 0 | -2^63 - 2^63-1 | long l = 10l; |
5 | float(单精度) | 32 | 0.0 | -2^31 - 2^31-1 | float f = 10.0f; |
6 | double(双精度) | 64 | 0.0 | -2^63 - 2^63-1 | double d = 10.0d; |
7 | char(字符) | 16 | 空 | 0 - 2^16-1 | char c = 'c'; |
8 | boolean(布尔值) | 8 | false | true、false | boolean b = true; |
不过我偶然之间看到了这个。
这说明了什么?说明不学习就会大脑迟钝,而越学习,人会变得越来越聪明。所以我认为,学习最好一天也不能中断。
85. 最大矩形 (力扣每日一题)
给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。
示例 1:
输入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1","1","1","1","1"],["1","0","0","1","0"]]
输出:6
解释:最大矩形如上图所示。
AC代码:
具体思路是这样的:暴力所有可能的矩形面积,然后得到最大的那个,不过无脑暴力应该是不能过的。所以需要先加工一下,建立一个DP二维数组,每一个数放置从左而来连续1的个数,然后我们以遍历的数为矩形的右下角进行遍历,每一次遍历当前坐标所有高度的矩形。最后得到结果。
时间复杂度:遍历数组使用n*m。每一个坐标点遍历所有矩形面具使用n。总的复杂度就是O(n²m)。
空间复杂度:使用额外n*m数组即O(nm);
public int maximalRectangle(char[][] matrix) { if (matrix.length==0||matrix[0].length==0){ return 0; } int maxArea=Integer.MIN_VALUE; int minWidth; int[][] dp = new int[matrix.length][matrix[0].length]; for (int i = 0; i <matrix.length ; i++) { for (int j = 0; j <matrix[0].length ; j++) { if (matrix[i][j]=='1'){ if (j==0){ dp[i][j]=1; } else{ dp[i][j]=dp[i][j-1]+1; } } else{ dp[i][j]=0; } minWidth=dp[i][j]; for (int k = i; k >=0 ; k--) { int height=i-k+1; minWidth= Math.min(minWidth,dp[k][j]); //System.out.println("i: "+i+"j: "+j+"k: "+k+"height: "+height+"minWidth: "+minWidth); maxArea= Math.max(maxArea,minWidth*height); } } //System.out.println(Arrays.toString(dp[i])); } return maxArea; }