簡體   English   中英

檢查二維數組的一行是否存在於另一個數組中的任何位置

[英]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.

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