[英]Checking if a row of a 2-dimensional array exists anywhere within another array
假設我有以下排序數組:
int[] numbers = {0, 0, 1, 2, 2, 2}
。
如何檢查以下二維數組中是否存在任何長度為 3 的numbers
子數組:
int[][] sets = { {0, 0, 0}, {1, 1, 1}, {2, 2, 2} }
在這個簡單的例子中, numbers
的最后 3 個元素顯然作為數組包含在sets
,但在我的實際程序中, sets
將有更多數字的 3 位排列,但它們都將保持長度為 3,並且numbers
將始終進行排序。
如果只允許小於 10 的數字,則最多有 1000 個可能的三個數字序列。 將它們編碼為 100*a i +10*a i+1 +a i+2 ,並將第一個此類序列的索引存儲在 1001 個元素的數組中。
在你的情況下, numbers
將被翻譯成
0, 0, 1, 2, 2, 2
1 - 0
12 - 1
122 - 2
222 - 3
第一列是 1001 個元素數組的索引; 第二列是放置在該索引處的值。 1001 個元素數組的其余位置設置為 -1。
要查看numbers
包含三元素序列,請從中構造 100*s 0 +10*s 1 +s 2數字,並在 1001 元素數組中查找。 如果得到 -1,則序列不存在; 否則,您將獲得所需子序列的起始索引。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.