【发布时间】:2018-08-12 19:00:13
【问题描述】:
稀疏矩阵是元素主要为零的矩阵。下面的代码使用 LinkedLists 的 ArrayList 来实现稀疏矩阵。它定义了一个类 Element 来存储元素的列号和值。每行仅由具有非零值的元素的 LinkedList 表示。很少(如果有的话)行全为零,因此 ArrayList 用于按行升序存储每一行的 LinkedList。
class Element {
public int column;
public int value; }
public class SparseMatrix {
private int mRows; // Number of rows
private int mCols; // Number of columns
private ArrayList<LinkedList<Element>> mMatrix;
1) 如何使用带有参数 (int r, int c) 的 getter,它提供特定的行号和列号来检索矩阵的该行和列中的值?
2) 如何使用带参数 (int r, int c, int v) 的 setter 将 r 行和 c 列的值设置为 v? (注意:如果节点不存在,则必须创建一个新节点。如果 v 为零,则删除该节点。)
如果我错了,请纠正我,但是要分别获得矩阵的总行数和总列数,我会这样做:
get(int r, int c) {
int rowSize = mMatrix.length;
int colSize = mMatrix[0].length;
}
但是,我不确定以后如何使用它。
【问题讨论】:
-
Q1:如何检查 mMatrix 是否有足够的行用于 'r'?如果没有,你如何“成长”它? Q2:您如何获得给定行的特定 LinkedList? Q3:如果有一行的链表,你将如何扫描以检查列
c是否已经存在一个元素?如果你找到一个,你将如何获取/设置它的值?如果你不这样做,你将如何制作一个新的并将其添加到列表中? ...发布您为这些步骤中的至少几个所做的尝试应该会提高人们帮助您的愿望。
标签: java matrix getter-setter