JAVA代码—算法基础:矩阵元素置零
2018-02-26 00:03
351 查看
[b]矩阵元素置零[/b]
问题描述:给定一个m*n的矩阵,如果某个位置是0。将对应的行和列设置为0。
算法设计:
(完)
问题描述:给定一个m*n的矩阵,如果某个位置是0。将对应的行和列设置为0。
算法设计:
package com.bean.algorithmbasic; public class SettingZeroProblem { /* * 给定一个m*n的矩阵,如果某个位置是0。将对应的行和列设置为0。 * */ public static void main(String[] args) { int[][] arrayDemo=new int[5][5]; for(int i=0;i<arrayDemo.length;i++) { for(int j=0;j<arrayDemo[0].length;j++) { arrayDemo[i][j]=(int)((Math.random())*10); System.out.print(arrayDemo[i][j]+"\t"); } System.out.println(); } SettingZeroProblem szp=new SettingZeroProblem(); szp.setZeroes(arrayDemo); System.out.println("--------------------------------"); for(int i=0;i<arrayDemo.length;i++) { for(int j=0;j<arrayDemo[0].length;j++) { System.out.print(arrayDemo[i][j]+"\t"); } System.out.println(); } } public void setZeroes(int[][] matrix) { int m = matrix.length; int n = matrix[0].length; int i, j; //先标记第一行和第一列是否有0 boolean firstRow = false, firstCol = false; for (j = 0; j < n; j++) { if (0 == matrix[0][j]) { firstRow = true; break; } } for (i = 0; i < m; i++) { if (0 == matrix[i][0]) { firstCol = true; break; } } //从第二行第二列还是遍历,如果遇到0,则把它所在行和列的第一个值设为0 for (i = 1; i < m; i++) { for (j = 1; j < n; j++) { if (0 == matrix[i][j]) { matrix[i][0] = 0; matrix[0][j] = 0; } } } //把第一列的0所在行都设为0,把第一行的0所在列都设为0 for (i = 1; i < m; i++) { if (0 == matrix[i][0]) { for (j = 1; j < n; j++) { matrix[i][j] = 0; } } } for (j = 1; j < n; j++) { if (0 == matrix[0][j]) { for (i = 1; i < m; i++) { matrix[i][j] = 0; } } } //根据标记决定第一行和第一列是否全设为0 if (firstRow) { for (j = 0; j < n; j++) { matrix[0][j] = 0; } } if (firstCol) { for (i = 0; i < m; i++) { matrix[i][0] = 0; } } } }
(完)
相关文章推荐
- JAVA代码—算法基础:将N*N的矩阵顺时针旋转90度输出元素
- JAVA代码—算法基础:最大子矩阵的和(N*N的矩阵)
- JAVA代码—算法基础:转圈打印矩阵
- JAVA代码—算法基础:计算已排序的数组中不重复的元素个数
- JAVA代码—算法基础:找出整形数组中只出现过1次的两个元素
- JAVA代码—算法基础:找出一维数组中重复次数最多的元素以及重复的次数
- JAVA代码—算法基础:0-1矩阵的问题
- JAVA代码—算法基础:数塔问题(动态规划)
- JAVA代码—算法基础:查找最长无重复的子字符串
- JAVA代码—算法基础:子数组的最大累加和问题
- JAVA代码—算法基础:因子组合问题
- JAVA代码—算法基础:0-1背包问题的回溯算法设计(续)
- JAVA代码—算法基础:寻找丑数
- JAVA代码—算法基础:马走8×8棋盘问题
- Java基础知识强化之集合框架笔记47:Set集合之TreeSet保证元素唯一性和比较器排序的原理及代码实现(比较器排序)
- JAVA代码—算法基础:寻找缺失的数组元素
- JAVA代码—算法基础:求两个字符串的最长公共子序列问题
- 【Java学习之代码学习】 Prog35_矩阵对角线元素之和
- JAVA代码—算法基础:寻找完美的数(算法优化详解)
- JAVA代码—算法基础:找出字符串的所有排列