r
行と列を持つマトリックスがありc
ます。行列を 2 次元配列に格納しました。下の図を参照してください。
各行の最小数を見つけます。最小数が最初の列にある場合、最小値を listC1 に追加します。
上の図を考えてみましょう。
最初の行 R1 の最小数は2
で、列 C1 にあります。 に 2 を追加しlistC1
ます。2行目R2の最小数は4
C3列にあり、4を追加したいですlistC3
。3 行目の R3 の最小数は5
C2 列にあります。5 を に追加しlistC2
ます。簡単に言えば、最小数が最初の列にある場合は最初のリストlistC1
に最小数を追加し、最小数が2番目の列にある場合は2番目のリストlistC2
に最小数を追加し、最小数が3番目の列にある場合は追加します3番目のリストの最小数listC3
など。
私が直面している問題は、上記のロジックを実装するためにリストのリストを作成する方法です。いくつかのコードを開発しました (以下を参照) が、正しく動作しません。この点で私を助けてください
Note: Ther number of columns may vary from 3 to 30
final float[][] matrix = {
{2f, 8f, 5f},
{9f, 7f, 4f},
{8f, 5f, 6f},
{7f, 3f, 9f},
{1f, 5f, 5f},
{8f, 7f, 5f},
};
Map<Integer, ArrayList<Float>> minsMap = new LinkedHashMap<>();
for(int row=0; row < matrix.length; row++)
{
float min = Float.MAX_VALUE;
int mc = 0;
for(int col=0; col < matrix[row].length; col++)
{
if(matrix[row][col] < min)
{
min = matrix[row][col];
mc = col;
}
ArrayList<Float> minList = minsMap.get(mc);
if(minList == null)
{
minList = new ArrayList<>();
minsMap.put(mc, minList);
}
minList.add(min);
}
}
for(java.util.Map.Entry<Integer, ArrayList<Float>> e : minsMap.entrySet())
{
System.out.println("Min values in column " + e.getKey() + ": " + e.getValue());
}