zoukankan      html  css  js  c++  java
  • Cracking the coding interview--Q1.7

    原文

    Write an algorithm such that if an element in an MxN matrix is 0, its entire row and column are set to 0.

    译文

    写一个算法,如果一个MxN中的一个元素为0,那么将这个元素所在的行和列都设置为0。

    解答

    遍历一次矩阵,当遇到元素等于0时,记录下这个元素对应的行和列。并设置一个标记。在遍历完之后,再根据之前的标记设置矩阵的值。

    import java.util.BitSet;
    
    public class Main {
    
        public static void setZero(int[][] mat, int m, int n) {
            BitSet lineFlag = new BitSet();
            BitSet rowFlag = new BitSet();
            for(int i = 0; i < m; i++) {
                for(int j = 0; j < n; j++) {
                    if(mat[i][j] == 0) {
                        lineFlag.set(i);
                        rowFlag.set(j);
                    }
                }
            }
            for(int i = 0; i < m; i++) {
                for(int j = 0; j < n; j++) {
                    if(lineFlag.get(i) || rowFlag.get(j)) {
                        mat[i][j] = 0;
                    }
                }
            }
        }
    
        public static void main(String args[]) {
            int a[][] = { { 1, 2, 3, 4 }, { 5, 6, 0, 8 }, { 9, 0, 11, 12 },
                    { 13, 14, 15, 16 } };
            for (int i = 0; i < 4; ++i) {
                for (int j = 0; j < 4; ++j)
                    System.out.print(a[i][j] + " ");
                System.out.println();
            }
            setZero(a, 4, 4);
            System.out.println("------------------");
            for (int i = 0; i < 4; ++i) {
                for (int j = 0; j < 4; ++j)
                    System.out.print(a[i][j] + " ");
                System.out.println();
            }
        }
    }
  • 相关阅读:
    01 HTTP协议_servlet基础
    JS 08表单操作_表单域
    09 多态
    JS 07 Dom
    JS 06 bom 框窗_页面_定时任务
    JS 05 json
    08 包_继承
    JS 04 Date_Math_String_Object
    【Java每日一题】20161018
    【Java每日一题】20161017
  • 原文地址:https://www.cnblogs.com/giraffe/p/3186729.html
Copyright © 2011-2022 走看看