longest_increasing_subsequence package¶
Module contents¶
Top-level package for Longest Increasing Subsequence.
-
longest_increasing_subsequence.longest_decreasing_subsequence(seq: Sequence[T], strict=False, key: Optional[Callable] = None) → List[T][source]¶ Returns the longest decreasing subsequence of the given sequence. There may be other decreasing subsequences of the same length.
>>> longest_decreasing_subsequence([0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15]) [12, 10, 9, 5, 3]
>>> longest_decreasing_subsequence([0, 0, 1, 2, 3, 2, 1, 0, 0]) [3, 2, 1, 0, 0]
>>> longest_decreasing_subsequence([0, 0, 1, 2, 3, 2, 1, 0, 0], strict=True) [3, 2, 1, 0]
- Parameters
seq – A sequence-like container of comparable objects.
strict – Whether the subsequence must be strictly decreasing.
key – If not None, values in sequence are compared by comparing their keys.
- Returns
The longest decreasing subsequence in seq as a list.
-
longest_increasing_subsequence.longest_decreasing_subsequence_indices(seq: Sequence[T], strict=False, key: Optional[Callable] = None) → List[int][source]¶ Returns the indices of the longest decreasing subsequence of the given sequence. There may be other decreasing subsequences of the same length.
>>> longest_decreasing_subsequence_indices([0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15]) [3, 5, 9, 10, 12]
>>> longest_decreasing_subsequence_indices([0, 0, 1, 2, 3, 2, 1, 0, 0]) [4, 5, 6, 7, 8]
>>> longest_decreasing_subsequence_indices([0, 0, 1, 2, 3, 2, 1, 0, 0], strict=True) [4, 5, 6, 7]
- Parameters
seq – A sequence-like container of comparable objects.
strict – Whether the subsequence must be strictly decreasing.
key – If not None, values in sequence are compared by comparing their keys.
- Returns
A list of indices of the longest decreasing subsequence in seq.
-
longest_increasing_subsequence.longest_increasing_subsequence(seq: Sequence[T], strict=False, key: Optional[Callable] = None) → List[T][source]¶ Returns the longest increasing subsequence of the given sequence. There may be other increasing subsequences of the same length.
>>> longest_increasing_subsequence([0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15]) [0, 2, 6, 9, 11, 15]
>>> longest_increasing_subsequence([0, 0, 1, 2, 3, 2, 1, 0, 0]) [0, 0, 1, 2, 2]
>>> longest_increasing_subsequence([0, 0, 1, 2, 3], strict=True) [0, 1, 2, 3]
>>> longest_increasing_subsequence(['A', 'B', 'CC', 'D', 'EEE'], key=len) ['A', 'B', 'D', 'EEE']
>>> "".join(longest_increasing_subsequence('aababbbdccddd')) 'aaabbbccddd'
- Parameters
seq – A sequence-like container of comparable objects.
strict – Whether the subsequence must be strictly increasing.
key – If not None, values in sequence are compared by comparing their keys.
- Returns
The longest increasing subsequence in seq as a list.
-
longest_increasing_subsequence.longest_increasing_subsequence_indices(seq: Sequence[T], strict=False, key: Optional[Callable] = None) → List[int][source]¶ Returns the indices of the longest increasing subsequence of the given sequence. There may be other increasing subsequences of the same length.
>>> longest_increasing_subsequence_indices([0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15]) [0, 4, 6, 9, 13, 15]
>>> longest_increasing_subsequence_indices([0, 0, 1, 2, 3, 2, 1, 0, 0]) [0, 1, 2, 3, 5]
>>> longest_increasing_subsequence_indices([0, 0, 1, 2, 3, 2, 1, 0, 0], strict=True) [0, 2, 3, 4]
- Parameters
seq – A sequence-like container of comparable objects.
strict – Whether the subsequence must be strictly increasing.
key – If not None, values in sequence are compared by comparing their keys.
- Returns
A list of indices of the longest increasing subsequence in seq.