美文网首页
要成功就做一百题-91

要成功就做一百题-91

作者: 西5d | 来源:发表于2020-08-28 17:48 被阅读0次

题目名称

矩阵置零

描述

难度属于中等,如下是题目的描述,leetcode 73题。

//给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。 
//
// 示例 1: 
//
// 输入: 
//[
//  [1,1,1],
//  [1,0,1],
//  [1,1,1]
//]
//输出: 
//[
//  [1,0,1],
//  [0,0,0],
//  [1,0,1]
//]

解题思路

这里我也没用其他复杂的东西,就是按照图形化的直观第一印象,找到等于0的位置的坐标并保存,然后从坐标开始,依次上下、左右地开始置为0;这里保存坐标用了个特殊的方式,定义两个数组列表,因为坐标是成对出现的,同时加入,序号一致,在置零的阶段,遍历坐标也比较方便。本来是中等难度的题目,没想到第一提交就通过了,而且耗时1ms超过100%,内存40MB超过80%,如下是详细的代码,这一直接单测。

代码

    @Test
    public void matrixTest() {
        int[][] matrix = new int[][] {{1, 1, 1}, {1, 9, 1}, {1, 2, 1}, {1, 0, 2}};
        setZeroes(matrix);
    }

    public void setZeroes(int[][] matrix) {
        int m = matrix.length;
        int n = matrix[0].length;

        List<Integer> mList = new ArrayList<>();
        List<Integer> nList = new ArrayList<>();
        for (int k = 0; k < m; k++) {
            for (int l = 0; l < n; l++) {
                if (matrix[k][l] == 0) {
                    mList.add(k);
                    nList.add(l);
                }
            }
        }
        for (int i = 0; i < mList.size(); i++) {
            int im = mList.get(i);
            int in = nList.get(i);

            int x = 0;
            int y = 0;
            while (x < m) {
                matrix[x++][in] = 0;
            }
            while (y < n) {
                matrix[im][y++] = 0;
            }
        }
        System.out.println(arrayToString(matrix));
    }

    private String arrayToString(Object[] arr) {
        StringBuilder builder = new StringBuilder("[");
        for (Object o : arr) {
            if (o instanceof int[]) {
                builder.append(Arrays.toString((int[]) o));
            }
        }
        builder.append("]");
        return builder.toString();
    }

总结

相关文章

  • 要成功就做一百题-91

    题目名称 矩阵置零 描述 难度属于中等,如下是题目的描述,leetcode 73题。 解题思路 这里我也没用其他复...

  • 要成功就做一百题-90

    题目名称 第十三题 罗马数字转整数 描述 解题思路 这里做了个找规律,先把所有字符加起来,再处理特殊情况,题目说了...

  • 要成功就做一百题-89

    题目名称 实现字符串函数strStr() ,第28题 描述 解题思路 目的是找出某个字符串在另一个字符串的起始位置...

  • 要成功就做一百题-92

    题目名称 括号生成 描述 难度属于中等,目的是根据给定的括号数,生成有效的括号集合。 解题思路 这题比较有意思,这...

  • 要成功就做一百题-93

    题目名称 有效的括号判断 描述 输入的字符串只包含{ [] } ()三种括号的组合,判断输入是否是有效的括号,如下...

  • 要成功就做一百题-99

    题目名称 爬楼梯问题,斐波拉契数列,泰波拉契数列 描述 第一个是常见的题目,第二个斐波拉契,第三个是斐波拉契的变种...

  • 要成功就做一百题-98

    题目名称 二叉树的中序遍历 描述 给定一个先序遍历的二叉树,打印出其中序(中根)遍历的结构。 解题思路 首先是根据...

  • 要成功就做一百题-100

    题目有点唬人,当然要的就是这个效果,标题党一把。从现在开始做100道leetcode题目,为了起到比较好的督促作用...

  • 要成功就做一百题-97

    题目名称 今天来一个简单题目试试水,好久没发了。 一来遇到个复杂题,一时没解,二来最近实在有点忙。废话不多,开始正...

  • 要成功就做一百题-95

    题目名称 已经排序的数组,必须在O(logn)的复杂度下统计得到指定元素的重复次数。 描述 比如数组[1,1,2,...

网友评论

      本文标题:要成功就做一百题-91

      本文链接:https://www.haomeiwen.com/subject/bnalsktx.html