簡體   English   中英

確定2D數組中所有相等且彼此相鄰的值

[英]Determining all values that are equal & next to one another in a 2D array

我對stackoverflow和編程都是陌生的,所以請問我這個問題不好的話。

假設我有一個二維數組,其整數值為1到4。它可能看起來像這樣:

3 3 3 1 3 1 3 1 2 1
1 3 1 3 3 1 1 1 1 1
1 4 3 3 1 3 3 4 3 4
1 4 1 1 3 3 1 4 2 4
1 1 1 4 1 3 3 1 1 3
1 2 3 3 3 3 3 3 1 1
4 1 4 3 3 2 1 1 4 1
1 3 3 3 4 1 4 2 2 3

讓我重寫它,以便可以隔離要我們觀察的數組的一部分:

x x x x x x x x x x
x x x x x x x x x x
x x x x x 3 3 x x x
x x x x 3 3 x x x x
x x x x x 3 3 x x x 
x x 3 3 3 3 3 3 x x
x x x 3 3 x x x x x
x 3 3 3 x x x x x x

我們看到,這里顯示的3不僅價值相等,而且彼此之間直接“相鄰”,並且全部“相連”。

我有4種方法來確定數組中空格的右邊,左邊,頂部或底部的空間是否等於給定的起始位置:

boolean isEqualRight(int row, int column) {
    return array[row][column] == array[row][column + 1];
}
boolean isEqualLeft(int row, int column) {
    return array[row][column] == array[row][column - 1];
}
boolean isEqualUp(int row, int column) {
    return array[row][column] == array[row - 1][column];
}
boolean isEqualDown(int row, int column) {
    return array[row][column] == array[row + 1][column];
}

但是,即使我知道數組中的位置是否相等並且在起始位置旁邊,我也無法想到一種確定數組中所有相等並連接到起始位置的解決方案。

我嘗試開發了一個循環,該循環將在起始3旁邊的空間中循環,確定它是否是下一個並等於它,然后對旁邊的3進行相同的操作,依此類推,依此類推。 但是當3開始分支時,我遇到了一個問題。 有什么想法嗎?

這是計算機圖形學中的標准問題。 該算法稱為“洪水填充”,在Wikipedia中進行了詳細介紹。

如果您想研究一種(只是google),也有很多Java實現。

您的方法看似正確,但是您應該添加代碼以捕獲任何可能的IndexOutOfBoundErrors。 例如,如果您獲取數組中的第一個元素並向上或向左檢查,則會出現IndexOutOfBound錯誤,因為它將引用不存在的元素,這適用於所有邊界元素。 這將阻止您的代碼有效運行。

這是處理數組時始終要考慮的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM