我想知道大小为'k'的排序子数组v'是否包含在另一个大小为'n'的排序数组中。我们知道k<=n.然而,使用double-for-loop或类似的东西会很容易,但我想用复杂性O(logn(来实现它。
例如,对于v=[-10,-3,0,4,7,19,33]和v'=[,4,7.19],它会说TRUE。
有人能帮我吗??????????
在n大小的数组中二进制搜索k尺寸的数组的第一个项,然后在O(k(时间内验证所有k+em>项都在较大的数组中,这是最好的选择。(您没有指定k项目之间是否不能有额外的项目;我假设不能有(。
执行此操作的运行时间取决于n和k的相对大小。如果n比k大得多,则二进制搜索将主导运行时间,如果不是,则线性搜索将主导。它本质上是O( max(log(n), k) )
。