Given an integer array `nums`, return the length of the longest **strictly increasing subsequence**.
**Example 1:**
```
Input: nums = [10,9,2,5,3,7,101,18]
Output: 4
Explanation: The longest increasing subsequence is [2,3,7,101] (length 4).
```
**Example 2:**
```
Input: nums = [0,1,0,3,2,3]
Output: 4
```
**Example 3:**
```
Input: nums = [7,7,7,7,7,7,7]
Output: 1
```
Can you come up with an algorithm that runs in O(n log n) time complexity?