子阵列,子集和子序列之间的差异

use*_*242 28 arrays subset subsequence

我在子阵列,子序列和子集之间有点困惑

如果我有 {1,2,3,4}

然后

子序列可以是{1,2,4}OR {2,4}等.所以基本上我可以省略一些元素但保持顺序.

子阵列(比如3号子阵)

{1,2,3}
{2,3,4} 
Run Code Online (Sandbox Code Playgroud)

那么子集是什么?

我对这3个人感到有点困惑.

小智 28

在我看来,如果给定的模式是数组,那么所谓的subarray意思contiguous subsequence.

例如,如果给出{1,2,3,4},subarray则可以

{1, 2, 3}
{2, 3, 4}
etc.
Run Code Online (Sandbox Code Playgroud)

虽然给定的模式是一个序列,但subsequence包含其下标在原始序列中增加的元素.

例如,也{1,2,3,4},subsequence可以是

{1, 3}
{1?4}
etc.
Run Code Online (Sandbox Code Playgroud)

虽然给定的模式是一个集合,但subset包含原始集合的任何可能组合.

例如,{1,2,3,4} subset可以

{1}
{2}
{3}
{4}
{1, 2}
{1, 3}
{1, 4}
{2, 3}
etc.
Run Code Online (Sandbox Code Playgroud)

  • 您需要提到的是,“子集”不需要维持顺序并且可以为空。 (6认同)

Rom*_*oma 9

在数组的上下文中,SubSequence - 不需要有条件但需要维护顺序.但是SubArray很有尊严,而且本身就维持着秩序.

如果你有{1,2,3,4} --- {1,3,4}是一个有效的SubSequence但它不是一个子阵列.

而子集是没有顺序的,也没有可靠的.所以你{1,3,2}是一个有效的子集,但不是子序列或子数组.

{1,2}是有效的子阵列,子集和子序列.

所有子阵列都是子序列,所有子序列都是子集.

但有时子集和子阵列以及子序列可以互换使用,而且有条不紊的词是前缀以使其更清晰.


use*_*174 7

考虑元素集合(数组、序列、集合等)中的这两个属性:顺序和连续性。

顺序是当您不能切换两个或多个元素的索引或位置时(具有单个元素的集合具有不相关的顺序)。

连续性是一个元素必须让他们的邻居留在他们身边或为空。

子数组具有顺序和连续性。

子序列有顺序但没有连续性。

子集既不有序也不连续。

不存在具有连续性但不具有顺序的集合(据我所知)


小智 6

考虑一个数组:

 {1,2,3,4}
Run Code Online (Sandbox Code Playgroud)

子数组:数组中的连续序列,即

{1,2},{1,2,3}
Run Code Online (Sandbox Code Playgroud)

子序列:不必连续,但要保持顺序,即

{1,2,4}
Run Code Online (Sandbox Code Playgroud)

子集:与子序列相同,但它具有空集,即

 {1,3},{}
Run Code Online (Sandbox Code Playgroud)

给定大小为n的数组/序列,可能

Subarray = n*(n+1)/2
Subseqeunce = (2^n) -1 (non-empty subsequences)
Subset = 2^n
Run Code Online (Sandbox Code Playgroud)

  • 然而,子集它不必维持顺序。 (8认同)