登录
  • #刷题
  • #careercup

CC150 1.7把矩阵元素为0的行和列清空

TonyJang
1709
7
[br][/br][br][/br]public class Q1_7{[br][/br][br][/br]public static void SetZero( int[][] matrix){[br][/br][br][/br]boolean [] row= new boolean[​ matrix. length ];  //二维矩阵的长度指行数,并且和字符串的长度method不一样,没有()[br][/br][br][/br]boolean [] column = new boolean[​ matrix[0]. length]; //列数[br][/br][br][/br]for (int i =0;i <matrix .length ;i ++){[br][/br][br][/br]for (int j =0;j <matrix [0].length ;j ++){[br][/br][br][/br]if (matrix [i][j ]==0){[br][/br][br][/br]row [i]= true;[br][/br][br][/br]column [j ]= true;[br][/br][br][/br]}[br][/br][br][/br]}[br][/br][br][/br]}[br][/br][br][/br]for (int i =0;i <matrix .length ;i ++){[br][/br][br][/br]for (int j =0;j <matrix [0].length ;j ++){[br][/br][br][/br]if (row [i]||column [j ]){[br][/br][br][/br]matrix [i][j ]=0;[br][/br][br][/br]}[br][/br][br][/br]}[br][/br][br][/br]}[br][/br][br][/br]}[br][/br][br][/br]public static void main(String[] args){[br][br][/br]        int [][] matrix = new int[][]{[br][/br][br][/br]                        {1,2,3,4,},[br][/br][br][/br]                        {5,6,7,8,},[br][/br][br][/br]                        {9,1,2,4},[br][/br][br][/br]                        {2,0,4,9}[br][/br][br][/br]                     };[br][/br][br][/br]SetZero( matrix);[br][/br][br][/br]for (int i =0;i <4;i ++){[br][/br][br][/br]for (int j =0;j <4;j ++){[br][/br][br][/br]System. out.print( matrix[​ i][​ j]);[br][/br][br][/br]}[br][/br][br][/br]System. out.println();[br][/br][br][/br]}[br][/br][br][/br]}[br][/br][br][/br]}[br][/br][br][/br]1)原方法是新建一个M*N的矩阵,所以空间复杂度为O(M*N)=N的平方,第二种开两个数组所以为O(M+N)=O(1),对吗?[br][/br][br][/br]关闭[br][/br][br][/br]2)时间复杂度?[/i][/i][/i][/i]
7条回复
热度排序

发表回复