1.7---将矩阵元素为0的行列清零0(CC150)

答案:

import java.util.ArrayList;
import java.util.List;

public class Solution{

    public static void main(String[] args){
        int[][] matix = {{1,2},{0,3}};
        clearZero(matix,2);
        System.out.println(matix[0][1]);
    }

    public static int[][] clearZero(int[][] matrix, int n){
        int high = matrix.length;
        int wide = matrix.length;
        if(high == 0) return matrix;
        List<Integer> listRow = new ArrayList();
        List<Integer> listCol = new ArrayList();
        for(int i = 0; i < wide; i++){
            for(int j = 0; j < high; j++){
                if(matrix[i][j] == 0){
                    listRow.add(i);
                    listCol.add(j);
                }
            }
        }
        for(int tmp : listRow){
            for(int j = 0; j < high; j++){
                matrix[tmp][j] = 0;
            }
        }
        for(int tmp : listCol){
            for(int i = 0; i < wide; i++){
                matrix[i][tmp] = 0;
            }
        }
        return matrix;
    }
时间: 2024-11-10 11:59:42

1.7---将矩阵元素为0的行列清零0(CC150)的相关文章

将矩阵中为0的元素所在行列清零

public class setZero { static void print(int [][]a){ for(int i=0;i<a.length;i++){ for(int j=0;j<a[i].length;j++){ System.out.print(a[i][j]+" "); } System.out.println(); } } /*static void SetZero(int [][]a, int i, int j){ for(int k=0; k<

将矩阵中0元素所对应的行列都清零

编写一个算法,若M*N矩阵中某个元素为0,则将其所在的行与列清零. void setZeros(int **matrix, int lrow, int lcol) { bool *row = new bool[lrow]; bool *column = new bool[lcol]; //记录值为0的元素所在的行索引和列索引 for (int i = 0; i < lrow; i++) { for (int j = 0; j < lcol; j++) { if (matrix[i][j] ==

将矩阵中值为0的元素所在的行和列设置为0, in-place O(1)space O(mn) time

Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. Follow up: Did you use extra space? A straight forward solution using O(mn) space is probably a bad idea. A simple improvement uses O(m + n) space, but stil

2016搜狗:矩阵元素相乘

题目矩阵元素相乘 A[n,m]是一个n行m列的矩阵,a[i,j]表示A的第i行j列的元素,定义x[i,j]为A的第i行和第j列除了a[i,j]之外所有元素(共n+m-2个)的乘积,即x[i,j]=a[i,1]*a[i,2]*...*a[i,j-1]*...*a[i,m]*a[1,j]*a[2,j]...*a[i-1,j]*a[i+1,j]...*a[n,j],现输入非负整形的矩阵A[n,m],求MAX(x[i,j]),即所有的x[i,j]中的最大值. 输入描述:第一行两个整数n和m.之后n行输入

求一个矩阵中最大的2*2矩阵(元素和最大)的和

编程题在线编程题30分2/2最大子矩阵Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Problem Description:求一个矩阵中最大的2*2矩阵(元素和最大)的和.如:1 2 0 3 42 3 4 5 11 1 5 3 0中最大的是:4 55 3和为17输入m*n的矩阵输出该m*n矩阵的最大2*2子矩阵(元素和最大)的和 样例输入 1 2 0 3 4 ; 2 3 4 5 1 

【编程题目】求一个矩阵中最大的二维矩阵(元素和最大)

35.(矩阵)求一个矩阵中最大的二维矩阵(元素和最大).如:1 2 0 3 42 3 4 5 11 1 5 3 0中最大的是:4 55 3要求:(1)写出算法;(2)分析时间复杂度;(3)用 C 写出关键代码 早上灭小题! /* 35.(矩阵) 求一个矩阵中最大的二维矩阵(元素和最大).如: 1 2 0 3 4 2 3 4 5 1 1 1 5 3 0 中最大的是: 4 5 5 3 要求:(1)写出算法;(2)分析时间复杂度;(3)用 C 写出关键代码 */ #include <stdio.h>

IT公司100题-35- 求一个矩阵中最大的二维矩阵(元素和最大)

问题描述: 求一个矩阵中最大的二维矩阵(元素和最大).如: 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 中最大的是: 4 5 9 10 分析: 2*2子数组的最大和.遍历求和,时间复杂度为O(mn). 代码实现: 1 // 35.cc 2 #include <iostream> 3 #include <climits> 4 using namespace std; 5 6 int find_max(int (*a)[5], int m, int n) { 7 in

顺时针打印矩阵元素(python实现)

我觉得我的算法比较简单易懂,比网上的那些简单些.至于时间复杂度就没有比较了. 算法思想:从最外层向内层遍历矩阵 # my algorithmimport math def print_matrix(matrix): rec = [] # 存储遍历元素 rows = len(matrix) cols = len(matrix[0]) if rows < cols: k = math.ceil(rows/2) else: k = math.ceil(cols/2) for n in range(k)

图片存进Mat类中,然后调用图像矩阵元素

Mat img = imread("test3.png",0);//灰度图 imwrite("origin.png",img); if(img.empty()) { cout << "图像加载失败!" << endl; //system("pause"); return -1; }; std::cout<<(float)img.at<uchar>(1,1)<< std