Skip to content

Commit 3eb1e7c

Browse files
authored
Added tasks 287-438
1 parent d1c7179 commit 3eb1e7c

File tree

32 files changed

+891
-1
lines changed

32 files changed

+891
-1
lines changed

README.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ implementation 'com.github.javadev:leetcode-in-scala:1.0'
7979

8080
| <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- -->
8181
|-|-|-|-|-|-
82+
| 0438 |[Find All Anagrams in a String](src/main/scala/g0401_0500/s0438_find_all_anagrams_in_a_string/Solution.scala)| Medium | Top_100_Liked_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(n+m)_Space_O(1) | 576 | 100.00
8283

8384
#### Day 6 Breadth First Search Depth First Search
8485

@@ -145,6 +146,7 @@ implementation 'com.github.javadev:leetcode-in-scala:1.0'
145146

146147
| <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- -->
147148
|-|-|-|-|-|-
149+
| 0300 |[Longest Increasing Subsequence](src/main/scala/g0201_0300/s0300_longest_increasing_subsequence/Solution.scala)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Binary_Search, Big_O_Time_O(n\*log_n)_Space_O(n) | 522 | 88.89
148150

149151
#### Day 17 Dynamic Programming
150152

@@ -156,6 +158,7 @@ implementation 'com.github.javadev:leetcode-in-scala:1.0'
156158
| <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- -->
157159
|-|-|-|-|-|-
158160
| 0072 |[Edit Distance](src/main/scala/g0001_0100/s0072_edit_distance/Solution.scala)| Hard | Top_100_Liked_Questions, String, Dynamic_Programming, Big_O_Time_O(n^2)_Space_O(n2) | 487 | 100.00
161+
| 0322 |[Coin Change](src/main/scala/g0301_0400/s0322_coin_change/Solution.scala)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Breadth_First_Search, Big_O_Time_O(m\*n)_Space_O(amount) | 533 | 84.21
159162

160163
#### Day 19 Bit Manipulation
161164

@@ -255,6 +258,7 @@ implementation 'com.github.javadev:leetcode-in-scala:1.0'
255258

256259
| <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- -->
257260
|-|-|-|-|-|-
261+
| 0300 |[Longest Increasing Subsequence](src/main/scala/g0201_0300/s0300_longest_increasing_subsequence/Solution.scala)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Binary_Search, Big_O_Time_O(n\*log_n)_Space_O(n) | 522 | 88.89
258262

259263
#### Day 4
260264

@@ -265,6 +269,7 @@ implementation 'com.github.javadev:leetcode-in-scala:1.0'
265269

266270
| <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- -->
267271
|-|-|-|-|-|-
272+
| 0287 |[Find the Duplicate Number](src/main/scala/g0201_0300/s0287_find_the_duplicate_number/Solution.scala)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Binary_Search, Two_Pointers, Bit_Manipulation, Big_O_Time_O(n)_Space_O(n) | 765 | 77.38
268273

269274
#### Day 6
270275

@@ -447,6 +452,7 @@ implementation 'com.github.javadev:leetcode-in-scala:1.0'
447452

448453
| <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- -->
449454
|-|-|-|-|-|-
455+
| 0300 |[Longest Increasing Subsequence](src/main/scala/g0201_0300/s0300_longest_increasing_subsequence/Solution.scala)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Binary_Search, Big_O_Time_O(n\*log_n)_Space_O(n) | 522 | 88.89
450456

451457
#### Day 19
452458

@@ -458,6 +464,7 @@ implementation 'com.github.javadev:leetcode-in-scala:1.0'
458464

459465
| <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- -->
460466
|-|-|-|-|-|-
467+
| 0322 |[Coin Change](src/main/scala/g0301_0400/s0322_coin_change/Solution.scala)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Breadth_First_Search, Big_O_Time_O(m\*n)_Space_O(amount) | 533 | 84.21
461468

462469
#### Day 21
463470

@@ -591,6 +598,7 @@ implementation 'com.github.javadev:leetcode-in-scala:1.0'
591598

592599
| <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- -->
593600
|-|-|-|-|-|-
601+
| 0438 |[Find All Anagrams in a String](src/main/scala/g0401_0500/s0438_find_all_anagrams_in_a_string/Solution.scala)| Medium | Top_100_Liked_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(n+m)_Space_O(1) | 576 | 100.00
594602

595603
#### Day 13
596604

@@ -830,6 +838,7 @@ implementation 'com.github.javadev:leetcode-in-scala:1.0'
830838

831839
| <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- -->
832840
|-|-|-|-|-|-
841+
| 0438 |[Find All Anagrams in a String](src/main/scala/g0401_0500/s0438_find_all_anagrams_in_a_string/Solution.scala)| Medium | Top_100_Liked_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(n+m)_Space_O(1) | 576 | 100.00
833842

834843
#### Day 13 Hashmap
835844

@@ -841,6 +850,7 @@ implementation 'com.github.javadev:leetcode-in-scala:1.0'
841850

842851
| <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- -->
843852
|-|-|-|-|-|-
853+
| 0394 |[Decode String](src/main/scala/g0301_0400/s0394_decode_string/Solution.scala)| Medium | Top_100_Liked_Questions, String, Stack, Recursion, Big_O_Time_O(n)_Space_O(n) | 476 | 10.00
844854

845855
#### Day 15 Heap
846856

@@ -887,6 +897,7 @@ implementation 'com.github.javadev:leetcode-in-scala:1.0'
887897

888898
| <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- -->
889899
|-|-|-|-|-|-
900+
| 0437 |[Path Sum III](src/main/scala/g0401_0500/s0437_path_sum_iii/Solution.scala)| Medium | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, Big_O_Time_O(n)_Space_O(n) | 498 | 90.91
890901

891902
#### Day 8 Binary Search
892903

@@ -916,11 +927,13 @@ implementation 'com.github.javadev:leetcode-in-scala:1.0'
916927
| <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- -->
917928
|-|-|-|-|-|-
918929
| 0198 |[House Robber](src/main/scala/g0101_0200/s0198_house_robber/Solution.scala)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Big_O_Time_O(n)_Space_O(n) | 426 | 98.04
930+
| 0322 |[Coin Change](src/main/scala/g0301_0400/s0322_coin_change/Solution.scala)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Breadth_First_Search, Big_O_Time_O(m\*n)_Space_O(amount) | 533 | 84.21
919931

920932
#### Day 13 Dynamic Programming
921933

922934
| <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- -->
923935
|-|-|-|-|-|-
936+
| 0416 |[Partition Equal Subset Sum](src/main/scala/g0401_0500/s0416_partition_equal_subset_sum/Solution.scala)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Big_O_Time_O(n\*sums)_Space_O(n\*sums) | 577 | 100.00
924937
| 0152 |[Maximum Product Subarray](src/main/scala/g0101_0200/s0152_maximum_product_subarray/Solution.scala)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Big_O_Time_O(N)_Space_O(1) | 472 | 100.00
925938

926939
#### Day 14 Sliding Window/Two Pointer
@@ -981,6 +994,7 @@ implementation 'com.github.javadev:leetcode-in-scala:1.0'
981994
| 0003 |[Longest Substring Without Repeating Characters](src/main/scala/g0001_0100/s0003_longest_substring_without_repeating_characters/Solution.scala)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Hash_Table, Sliding_Window, Big_O_Time_O(n)_Space_O(1) | 482 | 96.91
982995
| 0020 |[Valid Parentheses](src/main/scala/g0001_0100/s0020_valid_parentheses/Solution.scala)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, String, Stack, Big_O_Time_O(n)_Space_O(n) | 449 | 65.58
983996
| 0005 |[Longest Palindromic Substring](src/main/scala/g0001_0100/s0005_longest_palindromic_substring/Solution.scala)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, String, Dynamic_Programming, Big_O_Time_O(n)_Space_O(n) | 502 | 87.65
997+
| 0394 |[Decode String](src/main/scala/g0301_0400/s0394_decode_string/Solution.scala)| Medium | Top_100_Liked_Questions, String, Stack, Recursion, Big_O_Time_O(n)_Space_O(n) | 476 | 10.00
984998
| 0049 |[Group Anagrams](src/main/scala/g0001_0100/s0049_group_anagrams/Solution.scala)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, String, Hash_Table, Sorting, Big_O_Time_O(n\*k_log_k)_Space_O(n) | 618 | 91.67
985999

9861000
#### Udemy Binary Search
@@ -1081,6 +1095,7 @@ implementation 'com.github.javadev:leetcode-in-scala:1.0'
10811095
| 0198 |[House Robber](src/main/scala/g0101_0200/s0198_house_robber/Solution.scala)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Big_O_Time_O(n)_Space_O(n) | 426 | 98.04
10821096
| 0070 |[Climbing Stairs](src/main/scala/g0001_0100/s0070_climbing_stairs/Solution.scala)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Dynamic_Programming, Math, Memoization, Big_O_Time_O(n)_Space_O(n) | 369 | 98.32
10831097
| 0064 |[Minimum Path Sum](src/main/scala/g0001_0100/s0064_minimum_path_sum/Solution.scala)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Matrix, Big_O_Time_O(m\*n)_Space_O(m\*n) | 521 | 92.86
1098+
| 0300 |[Longest Increasing Subsequence](src/main/scala/g0201_0300/s0300_longest_increasing_subsequence/Solution.scala)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Binary_Search, Big_O_Time_O(n\*log_n)_Space_O(n) | 522 | 88.89
10841099
| 0072 |[Edit Distance](src/main/scala/g0001_0100/s0072_edit_distance/Solution.scala)| Hard | Top_100_Liked_Questions, String, Dynamic_Programming, Big_O_Time_O(n^2)_Space_O(n2) | 487 | 100.00
10851100
| 0010 |[Regular Expression Matching](src/main/scala/g0001_0100/s0010_regular_expression_matching/Solution.scala)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, String, Dynamic_Programming, Recursion, Big_O_Time_O(m\*n)_Space_O(m\*n) | 459 | 75.00
10861101

@@ -1098,6 +1113,7 @@ implementation 'com.github.javadev:leetcode-in-scala:1.0'
10981113

10991114
| <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- -->
11001115
|-|-|-|-|-|-
1116+
| 0338 |[Counting Bits](src/main/scala/g0301_0400/s0338_counting_bits/Solution.scala)| Easy | Top_100_Liked_Questions, Dynamic_Programming, Bit_Manipulation, Big_O_Time_O(num)_Space_O(num) | 447 | 92.68
11011117

11021118
#### Udemy Design
11031119

@@ -1312,6 +1328,7 @@ implementation 'com.github.javadev:leetcode-in-scala:1.0'
13121328
| <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- --> | <!-- -->
13131329
|-|-|-|-|-|-
13141330
| 0215 |[Kth Largest Element in an Array](src/main/scala/g0201_0300/s0215_kth_largest_element_in_an_array/Solution.scala)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Sorting, Heap_Priority_Queue, Divide_and_Conquer, Quickselect, Big_O_Time_O(n\*log(n))_Space_O(log(n)) | 799 | 95.45
1331+
| 0347 |[Top K Frequent Elements](src/main/scala/g0301_0400/s0347_top_k_frequent_elements/Solution.scala)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Sorting, Heap_Priority_Queue, Counting, Divide_and_Conquer, Quickselect, Bucket_Sort, Big_O_Time_O(n\*log(n))_Space_O(k) | 589 | 93.24
13151332

13161333
#### Day 21 Heap Priority Queue
13171334

@@ -1405,6 +1422,16 @@ implementation 'com.github.javadev:leetcode-in-scala:1.0'
14051422

14061423
| # | Title | Difficulty | Tag | Time, ms | Time, %
14071424
|------|----------------|-------------|-------------|----------|---------
1425+
| 0438 |[Find All Anagrams in a String](src/main/scala/g0401_0500/s0438_find_all_anagrams_in_a_string/Solution.scala)| Medium | Top_100_Liked_Questions, String, Hash_Table, Sliding_Window, Algorithm_II_Day_5_Sliding_Window, Programming_Skills_II_Day_12, Level_1_Day_12_Sliding_Window/Two_Pointer, Big_O_Time_O(n+m)_Space_O(1) | 576 | 100.00
1426+
| 0437 |[Path Sum III](src/main/scala/g0401_0500/s0437_path_sum_iii/Solution.scala)| Medium | Top_100_Liked_Questions, Depth_First_Search, Tree, Binary_Tree, Level_2_Day_7_Tree, Big_O_Time_O(n)_Space_O(n) | 498 | 90.91
1427+
| 0416 |[Partition Equal Subset Sum](src/main/scala/g0401_0500/s0416_partition_equal_subset_sum/Solution.scala)| Medium | Top_100_Liked_Questions, Array, Dynamic_Programming, Level_2_Day_13_Dynamic_Programming, Big_O_Time_O(n\*sums)_Space_O(n\*sums) | 577 | 100.00
1428+
| 0394 |[Decode String](src/main/scala/g0301_0400/s0394_decode_string/Solution.scala)| Medium | Top_100_Liked_Questions, String, Stack, Recursion, Level_1_Day_14_Stack, Udemy_Strings, Big_O_Time_O(n)_Space_O(n) | 476 | 10.00
1429+
| 0347 |[Top K Frequent Elements](src/main/scala/g0301_0400/s0347_top_k_frequent_elements/Solution.scala)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Hash_Table, Sorting, Heap_Priority_Queue, Counting, Divide_and_Conquer, Quickselect, Bucket_Sort, Data_Structure_II_Day_20_Heap_Priority_Queue, Big_O_Time_O(n\*log(n))_Space_O(k) | 589 | 93.24
1430+
| 0338 |[Counting Bits](src/main/scala/g0301_0400/s0338_counting_bits/Solution.scala)| Easy | Top_100_Liked_Questions, Dynamic_Programming, Bit_Manipulation, Udemy_Bit_Manipulation, Big_O_Time_O(num)_Space_O(num) | 447 | 92.68
1431+
| 0322 |[Coin Change](src/main/scala/g0301_0400/s0322_coin_change/Solution.scala)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Breadth_First_Search, Algorithm_II_Day_18_Dynamic_Programming, Dynamic_Programming_I_Day_20, Level_2_Day_12_Dynamic_Programming, Big_O_Time_O(m\*n)_Space_O(amount) | 533 | 84.21
1432+
| 0300 |[Longest Increasing Subsequence](src/main/scala/g0201_0300/s0300_longest_increasing_subsequence/Solution.scala)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Dynamic_Programming, Binary_Search, Algorithm_II_Day_16_Dynamic_Programming, Binary_Search_II_Day_3, Dynamic_Programming_I_Day_18, Udemy_Dynamic_Programming, Big_O_Time_O(n\*log_n)_Space_O(n) | 522 | 88.89
1433+
| 0295 |[Find Median from Data Stream](src/main/scala/g0201_0300/s0295_find_median_from_data_stream/MedianFinder.scala)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, Sorting, Two_Pointers, Design, Heap_Priority_Queue, Data_Stream, Big_O_Time_O(n\*log_n)_Space_O(n) | 1690 | 83.33
1434+
| 0287 |[Find the Duplicate Number](src/main/scala/g0201_0300/s0287_find_the_duplicate_number/Solution.scala)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Binary_Search, Two_Pointers, Bit_Manipulation, Binary_Search_II_Day_5, Big_O_Time_O(n)_Space_O(n) | 765 | 77.38
14081435
| 0283 |[Move Zeroes](src/main/scala/g0201_0300/s0283_move_zeroes/Solution.scala)| Easy | Top_100_Liked_Questions, Top_Interview_Questions, Array, Two_Pointers, Algorithm_I_Day_3_Two_Pointers, Programming_Skills_I_Day_6_Array, Udemy_Arrays, Big_O_Time_O(n)_Space_O(1) | 572 | 86.11
14091436
| 0240 |[Search a 2D Matrix II](src/main/scala/g0201_0300/s0240_search_a_2d_matrix_ii/Solution.scala)| Medium | Top_100_Liked_Questions, Top_Interview_Questions, Array, Binary_Search, Matrix, Divide_and_Conquer, Data_Structure_II_Day_4_Array, Binary_Search_II_Day_8, Big_O_Time_O(n+m)_Space_O(1) | 579 | 66.67
14101437
| 0239 |[Sliding Window Maximum](src/main/scala/g0201_0300/s0239_sliding_window_maximum/Solution.scala)| Hard | Top_100_Liked_Questions, Top_Interview_Questions, Array, Heap_Priority_Queue, Sliding_Window, Queue, Monotonic_Queue, Udemy_Arrays, Big_O_Time_O(n\*k)_Space_O(n+k) | 1149 | 86.67
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package g0201_0300.s0287_find_the_duplicate_number
2+
3+
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #Binary_Search #Two_Pointers
4+
// #Bit_Manipulation #Binary_Search_II_Day_5 #Big_O_Time_O(n)_Space_O(n)
5+
// #2023_11_08_Time_765_ms_(77.38%)_Space_75.7_MB_(96.43%)
6+
7+
object Solution {
8+
def findDuplicate(nums: Array[Int]): Int = {
9+
val arr = new Array[Int](nums.length + 1)
10+
for (num <- nums) {
11+
arr(num) += 1
12+
if (arr(num) == 2) {
13+
return num
14+
}
15+
}
16+
0
17+
}
18+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
287\. Find the Duplicate Number
2+
3+
Medium
4+
5+
Given an array of integers `nums` containing `n + 1` integers where each integer is in the range `[1, n]` inclusive.
6+
7+
There is only **one repeated number** in `nums`, return _this repeated number_.
8+
9+
You must solve the problem **without** modifying the array `nums` and uses only constant extra space.
10+
11+
**Example 1:**
12+
13+
**Input:** nums = [1,3,4,2,2]
14+
15+
**Output:** 2
16+
17+
**Example 2:**
18+
19+
**Input:** nums = [3,1,3,4,2]
20+
21+
**Output:** 3
22+
23+
**Example 3:**
24+
25+
**Input:** nums = [1,1]
26+
27+
**Output:** 1
28+
29+
**Example 4:**
30+
31+
**Input:** nums = [1,1,2]
32+
33+
**Output:** 1
34+
35+
**Constraints:**
36+
37+
* <code>1 <= n <= 10<sup>5</sup></code>
38+
* `nums.length == n + 1`
39+
* `1 <= nums[i] <= n`
40+
* All the integers in `nums` appear only **once** except for **precisely one integer** which appears **two or more** times.
41+
42+
**Follow up:**
43+
44+
* How can we prove that at least one duplicate number must exist in `nums`?
45+
* Can you solve the problem in linear runtime complexity?
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package g0201_0300.s0295_find_median_from_data_stream
2+
3+
// #Hard #Top_100_Liked_Questions #Top_Interview_Questions #Sorting #Two_Pointers #Design
4+
// #Heap_Priority_Queue #Data_Stream #Big_O_Time_O(n*log_n)_Space_O(n)
5+
// #2023_11_08_Time_1690_ms_(83.33%)_Space_96.2_MB_(8.33%)
6+
7+
import scala.collection.mutable
8+
9+
class MedianFinder() {
10+
private val maxHeap = mutable.PriorityQueue.empty[Int]
11+
private val minHeap = mutable.PriorityQueue.empty[Int](Ordering.Int.reverse)
12+
13+
def addNum(num: Int) {
14+
maxHeap += num
15+
minHeap += maxHeap.dequeue()
16+
17+
if (maxHeap.size < minHeap.size)
18+
maxHeap += minHeap.dequeue()
19+
}
20+
21+
def findMedian(): Double = {
22+
if (maxHeap.size > minHeap.size)
23+
maxHeap.head
24+
else
25+
(maxHeap.head + minHeap.head).toDouble / 2
26+
}
27+
28+
}
29+
30+
/*
31+
* Your MedianFinder object will be instantiated and called as such:
32+
* var obj = new MedianFinder()
33+
* obj.addNum(num)
34+
* var param_2 = obj.findMedian()
35+
*/
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
295\. Find Median from Data Stream
2+
3+
Hard
4+
5+
The **median** is the middle value in an ordered integer list. If the size of the list is even, there is no middle value and the median is the mean of the two middle values.
6+
7+
* For example, for `arr = [2,3,4]`, the median is `3`.
8+
* For example, for `arr = [2,3]`, the median is `(2 + 3) / 2 = 2.5`.
9+
10+
Implement the MedianFinder class:
11+
12+
* `MedianFinder()` initializes the `MedianFinder` object.
13+
* `void addNum(int num)` adds the integer `num` from the data stream to the data structure.
14+
* `double findMedian()` returns the median of all elements so far. Answers within <code>10<sup>-5</sup></code> of the actual answer will be accepted.
15+
16+
**Example 1:**
17+
18+
**Input**
19+
20+
["MedianFinder", "addNum", "addNum", "findMedian", "addNum", "findMedian"]
21+
[[], [1], [2], [], [3], []]
22+
23+
**Output:** [null, null, null, 1.5, null, 2.0]
24+
25+
**Explanation:**
26+
27+
MedianFinder medianFinder = new MedianFinder();
28+
medianFinder.addNum(1); // arr = [1]
29+
medianFinder.addNum(2); // arr = [1, 2]
30+
medianFinder.findMedian(); // return 1.5 (i.e., (1 + 2) / 2)
31+
medianFinder.addNum(3); // arr[1, 2, 3]
32+
medianFinder.findMedian(); // return 2.0
33+
34+
**Constraints:**
35+
36+
* <code>-10<sup>5</sup> <= num <= 10<sup>5</sup></code>
37+
* There will be at least one element in the data structure before calling `findMedian`.
38+
* At most <code>5 * 10<sup>4</sup></code> calls will be made to `addNum` and `findMedian`.
39+
40+
**Follow up:**
41+
42+
* If all integer numbers from the stream are in the range `[0, 100]`, how would you optimize your solution?
43+
* If `99%` of all integer numbers from the stream are in the range `[0, 100]`, how would you optimize your solution?
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package g0201_0300.s0300_longest_increasing_subsequence
2+
3+
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Array #Dynamic_Programming
4+
// #Binary_Search #Algorithm_II_Day_16_Dynamic_Programming #Binary_Search_II_Day_3
5+
// #Dynamic_Programming_I_Day_18 #Udemy_Dynamic_Programming #Big_O_Time_O(n*log_n)_Space_O(n)
6+
// #2023_11_08_Time_522_ms_(88.89%)_Space_55.5_MB_(88.89%)
7+
8+
object Solution {
9+
def lengthOfLIS(nums: Array[Int]): Int = {
10+
if (nums == null || nums.isEmpty) {
11+
return 0
12+
}
13+
14+
val dp = Array.fill(nums.length + 1)(Int.MaxValue)
15+
val left = 1
16+
var right = 1
17+
18+
for (curr <- nums) {
19+
var start = left
20+
var end = right
21+
22+
while (start + 1 < end) {
23+
val mid = start + (end - start) / 2
24+
if (dp(mid) > curr) {
25+
end = mid
26+
} else {
27+
start = mid
28+
}
29+
}
30+
31+
if (dp(start) > curr) {
32+
dp(start) = curr
33+
} else if (curr > dp(start) && curr < dp(end)) {
34+
dp(end) = curr
35+
} else if (curr > dp(end)) {
36+
dp(end + 1) = curr
37+
right += 1
38+
}
39+
}
40+
41+
right
42+
}
43+
}

0 commit comments

Comments
 (0)