LeetCode[300] 最长递增子序列


Related Topics:
“数组”: https://leetcode.com/tag/array/
“二分查找”: https://leetcode.com/tag/binary-search/
“动态规划”: https://leetcode.com/tag/dynamic-programming/
Similar Questions:
“递增的三元子序列”: https://leetcode.com/problems/increasing-triplet-subsequence/
“俄罗斯套娃信封问题”: https://leetcode.com/problems/russian-doll-envelopes/
“最长数对链”: https://leetcode.com/problems/maximum-length-of-pair-chain/
“最长递增子序列的个数”: https://leetcode.com/problems/number-of-longest-increasing-subsequence/
“两个字符串的最小ASCII删除和”: https://leetcode.com/problems/minimum-ascii-delete-sum-for-two-strings/

Problem:

给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。

子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。

示例 1:

1
2
3
输入:nums = [10,9,2,5,3,7,101,18]
输出:4
解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。

示例 2:

1
2
输入:nums = [0,1,0,3,2,3]
输出:4

示例 3:

1
2
输入:nums = [7,7,7,7,7,7,7]
输出:1

提示:

  • 1 <= nums.length <= 2500
  • -104 <= nums[i] <= 104

进阶:

  • 你可以设计时间复杂度为 O(n2) 的解决方案吗?
  • 你能将算法的时间复杂度降低到 O(n log(n)) 吗?
Read more

LeetCode[704] 二分查找


Related Topics:
“数组”: https://leetcode.com/tag/array/
“二分查找”: https://leetcode.com/tag/binary-search/
Similar Questions:
“搜索长度未知的有序数组”: https://leetcode.com/problems/search-in-a-sorted-array-of-unknown-size/

Problem:

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1

示例 1:

1
2
3
输入: nums = [-1,0,3,5,9,12], target = 9
输出: 4
解释: 9 出现在 nums 中并且下标为 4

示例 2:

1
2
3
输入: nums = [-1,0,3,5,9,12], target = 2
输出: -1
解释: 2 不存在 nums 中因此返回 -1

提示:

  1. 你可以假设 nums 中的所有元素是不重复的。
  2. n 将在 [1, 10000]之间。
  3. nums 的每个元素都将在 [-9999, 9999]之间。
Read more

LeetCode[4] 寻找两个正序数组的中位数

“数组”: https://leetcode.com/tag/array/ “二分查找”: https://leetcode.com/tag/binary-search/ “分治算法”: https://leetcode.com/tag/divide-and-conquer/

Problem:

给定两个大小分别为 mn 的正序(从小到大)数组 nums1nums2。请你找出并返回这两个正序数组的 中位数

示例 1:

1
2
3
输入:nums1 = [1,3], nums2 = [2]
输出:2.00000
解释:合并数组 = [1,2,3] ,中位数 2

示例 2:

1
2
3
输入:nums1 = [1,2], nums2 = [3,4]
输出:2.50000
解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5

示例 3:

1
2
输入:nums1 = [0,0], nums2 = [0,0]
输出:0.00000

示例 4:

1
2
输入:nums1 = [], nums2 = [1]
输出:1.00000

示例 5:

1
2
输入:nums1 = [2], nums2 = []
输出:2.00000

提示:

  • nums1.length == m
  • nums2.length == n
  • 0 <= m <= 1000
  • 0 <= n <= 1000
  • 1 <= m + n <= 2000
  • 106 <= nums1[i], nums2[i] <= 106
  • 进阶:*你能设计一个时间复杂度为 O(log (m+n)) 的算法解决此问题吗?
Read more