Arrays C:检查数组中的子数组
我想知道一种在C语言中检查较大数组中是否存在子数组的有效方法,数组将始终按数字顺序排列,例如:Arrays C:检查数组中的子数组,arrays,combinations,Arrays,Combinations,我想知道一种在C语言中检查较大数组中是否存在子数组的有效方法,数组将始终按数字顺序排列,例如: x = {1,2,3,4,5,6} y = {3,4} z = {6,7} x中的y=真 x中的z=FALSE以x中的y为例。 首先你可以检查一下 if(y[0] <= x[x.length-1]) //binary search in array x for y[y.length-1] //if that is true u can say that y in x else
x = {1,2,3,4,5,6}
y = {3,4}
z = {6,7}
x中的y=真
x中的z=FALSE以x中的y为例。 首先你可以检查一下
if(y[0] <= x[x.length-1])
//binary search in array x for y[y.length-1]
//if that is true u can say that y in x else false.
好办法。一个非常简单的扩展是对子数组两端进行二进制搜索。
var x = new HashSet<int>(Enumerable.Range(1,6)); // [1,2,3,4,5,6]
var y = Enumerable.Range(1,3); // [1,2,3]
var z = Enumerable.Range(6,2); // [6,7]
x.IsSupersetOf(y); // true
x.IsSupersetOf(z); // false