Skip to content

Commit cdc1dc7

Browse files
committed
feat: add longest increasing subsequence in rs
1 parent 92cabef commit cdc1dc7

File tree

3 files changed

+28
-2
lines changed

3 files changed

+28
-2
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#![allow(dead_code)]
2+
pub fn length_of_lis(nums: Vec<i32>) -> i32 {
3+
if nums.is_empty() {
4+
return 0;
5+
}
6+
let mut dp = vec![1; nums.len()];
7+
for i in 0..nums.len() {
8+
for j in 0..i {
9+
if nums[i] > nums[j] {
10+
dp[i] = dp[i].max(dp[j] + 1);
11+
}
12+
}
13+
}
14+
*dp.iter().max().unwrap()
15+
}
16+
17+
#[cfg(test)]
18+
mod tests {
19+
use super::*;
20+
21+
#[test]
22+
fn test_length_of_lis() {
23+
assert_eq!(length_of_lis(vec![10, 9, 2, 5, 3, 7, 101, 18]), 4);
24+
assert_eq!(length_of_lis(vec![0, 1, 0, 3, 2, 3]), 4);
25+
}
26+
}

src/readme.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@
8989
- [x] [238. Product of array except self](../src/medium/product_of_array_except_self.rs) -> [Problem Description](../src/medium/readme.md#238-product-of-array-except-self)
9090
- [x] [271. Encode and decode strings](../src/medium/encode_and_decode_strings.rs) -> [Problem Description](../src/medium/readme.md#271-encode-and-decode-strings)
9191
- [x] [287. Find the duplicate number](../src/medium/find_the_duplicate_number.rs) -> [Problem Description](../src/medium/readme.md#287-find-the-duplicate-number)
92-
- [ ] [300. Longest increasing subsequence](../src/medium/longest_increasing_subsequence.rs) -> [Problem Description](../src/medium/readme.md#300-longest-increasing-subsequence)
92+
- [x] [300. Longest increasing subsequence](../src/medium/longest_increasing_subsequence.rs) -> [Problem Description](../src/medium/readme.md#300-longest-increasing-subsequence)
9393
- [x] [322. Coin change](../src/medium/coin_change.rs) -> [Problem Description](../src/medium/readme.md#322-coin-change)
9494
- [x] [347. Top k frequent elements](../src/medium/top_k_frequent_elements.rs) -> [Problem Description](../src/medium/readme.md#347-top-k-frequent-elements)
9595
- [x] [355. Design twitter](../src/medium/design_twitter.rs) -> [Problem Description](../src/medium/readme.md#355-design-twitter)

theory/categories/6.1d_dp/readme.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ Dynamic programming and greedy algorithms are similar. Both are optimization met
2929
- [x] [Coin Change](https://leetcode.com/problems/coin-change/) | Medium | [Solution](../../../src/medium/coin_change.rs) | [Problem Description](../../../src/medium/readme.md#322-coin-change)
3030
- [x] [Maximum Product Subarray](https://leetcode.com/problems/maximum-product-subarray/) | Medium | [Solution](../../../src/medium/maximum_product_subarray.rs) | [Problem Description](../../../src/medium/readme.md#152-maximum-product-subarray)
3131
- [x] [Word Break](https://leetcode.com/problems/word-break/) | Medium | [Solution](../../../src/medium/word_break.rs) | [Problem Description](../../../src/medium/readme.md#139-word-break)
32-
- [ ] [Longest Increasing Subsequence](https://leetcode.com/problems/longest-increasing-subsequence/) | Medium | [Solution](../../../src/medium/longest_increasing_subsequence.rs) | [Problem Description](../../../src/medium/readme.md#300-longest-increasing-subsequence)
32+
- [x] [Longest Increasing Subsequence](https://leetcode.com/problems/longest-increasing-subsequence/) | Medium | [Solution](../../../src/medium/longest_increasing_subsequence.rs) | [Problem Description](../../../src/medium/readme.md#300-longest-increasing-subsequence)
3333
- [ ] [Partition Equal Subset Sum](https://leetcode.com/problems/partition-equal-subset-sum/) | Medium | [Solution](../../../src/medium/partition_equal_subset_sum.rs) | [Problem Description](../../../src/medium/readme.md#416-partition-equal-subset-sum)
3434

3535

0 commit comments

Comments
 (0)