## Question

Given an unsorted array of integers, find the length of longest increasing subsequence.

For example,
Given `[10, 9, 2, 5, 3, 7, 101, 18]`

,
The longest increasing subsequence is `[2, 3, 7, 101]`

, therefore the length is `4`

. Note that there may be more than one LIS combination, it is only necessary for you to return the length.

Your algorithm should run in complexity.

**Follow up:** Could you improve it to *O(n log n)* time complexity?

## Solution

**Result:** Accepted **Time:** 36 ms

Here should be some explanations.

```
int dp[65535];
int lengthOfLIS(int* nums, int nsz) {
dp[0] = 1;
int ret = nsz&1;
for(int i = 1; i < nsz; i++)
{
int value = 0;
for(int j = 0; j < i; j++)
if(nums[j] < nums[i] && dp[j] > value)
value = dp[j];
dp[i] = value+1;
if(dp[i] > ret)
ret = dp[i];
}
return ret;
}
```

**Complexity Analytics**

- Time Complexity:
- Space Complexity: