mirror of
https://github.com/prdlk/leetcode.git
synced 2026-11-02 13:12:44 +00:00
feat(work): add 901 online stock span solution and implement removeDuplicates algorithm
This commit is contained in:
1 parent
a3e846c606
commit
598688977a
2 files changed
+88
-6
No files matched your search
@@ -37,7 +37,7 @@ for (int i = 0; i < k; i++) {
|
||||
|
||||
If all assertions pass, then your solution will be accepted.
|
||||
|
||||
|
||||
|
||||
|
||||
Example 1:
|
||||
|
||||
@@ -57,17 +57,23 @@ elements of nums being 0, 0, 1, 1, 2, 3 and 3 respectively.
|
||||
It does not matter what you leave beyond the returned k (hence they
|
||||
are underscores).
|
||||
|
||||
|
||||
|
||||
|
||||
Constraints:
|
||||
|
||||
• 1 <= nums.length <= 3 * 10^4
|
||||
• 1 <= nums.length <= 3 * 10^4
|
||||
|
||||
• -10^4 <= nums[i] <= 10^4
|
||||
• -10^4 <= nums[i] <= 10^4
|
||||
|
||||
• nums is sorted in non-decreasing order.
|
||||
• nums is sorted in non-decreasing order.
|
||||
"""
|
||||
|
||||
|
||||
class Solution:
|
||||
def removeDuplicates(self, nums: list[int]) -> int:
|
||||
|
||||
slow = 0
|
||||
for fast in range(len(nums)):
|
||||
if slow < 2 or nums[fast] != nums[slow - 2]:
|
||||
nums[slow] = nums[fast]
|
||||
slow += 1
|
||||
return slow
|
||||
@@ -0,0 +1,76 @@
|
||||
"""
|
||||
901. Online Stock Span
|
||||
Difficulty: Medium
|
||||
https://leetcode.com/problems/online-stock-span/
|
||||
|
||||
──────────────────────────────────────────────────
|
||||
|
||||
Design an algorithm that collects daily price quotes for some stock
|
||||
and returns the span of that stock's price for the current day.
|
||||
|
||||
The span of the stock's price in one day is the maximum number of
|
||||
consecutive days (starting from that day and going backward) for which
|
||||
the stock price was less than or equal to the price of that day.
|
||||
|
||||
• For example, if the prices of the stock in the last four days are
|
||||
[7,2,1,2] and the price of the stock today is 2, then the span of
|
||||
today is 4 because starting from today, the price of the stock was
|
||||
less than or equal to 2 for 4 consecutive days.
|
||||
|
||||
• Also, if the prices of the stock in the last four days is
|
||||
[7,34,1,2] and the price of the stock today is 8, then the span of
|
||||
today is 3 because starting from today, the price of the stock was
|
||||
less than or equal 8 for 3 consecutive days.
|
||||
|
||||
Implement the StockSpanner class:
|
||||
|
||||
• StockSpanner() Initializes the object of the class.
|
||||
|
||||
• int next(int price) Returns the span of the stock's price given
|
||||
that today's price is price.
|
||||
|
||||
|
||||
|
||||
Example 1:
|
||||
|
||||
Input
|
||||
["StockSpanner", "next", "next", "next", "next", "next", "next",
|
||||
"next"]
|
||||
[[], [100], [80], [60], [70], [60], [75], [85]]
|
||||
Output
|
||||
[null, 1, 1, 1, 2, 1, 4, 6]
|
||||
|
||||
Explanation
|
||||
StockSpanner stockSpanner = new StockSpanner();
|
||||
stockSpanner.next(100); // return 1
|
||||
stockSpanner.next(80); // return 1
|
||||
stockSpanner.next(60); // return 1
|
||||
stockSpanner.next(70); // return 2
|
||||
stockSpanner.next(60); // return 1
|
||||
stockSpanner.next(75); // return 4, because the last 4 prices
|
||||
(including today's price of 75) were less than or equal to today's
|
||||
price.
|
||||
stockSpanner.next(85); // return 6
|
||||
|
||||
|
||||
|
||||
Constraints:
|
||||
|
||||
• 1 <= price <= 10^5
|
||||
|
||||
• At most 10^4 calls will be made to next.
|
||||
"""
|
||||
|
||||
class StockSpanner:
|
||||
|
||||
def __init__(self):
|
||||
prices = []
|
||||
|
||||
|
||||
def next(self, price: int) -> int:
|
||||
|
||||
|
||||
|
||||
# Your StockSpanner object will be instantiated and called as such:
|
||||
# obj = StockSpanner()
|
||||
# param_1 = obj.next(price)
|
||||
Reference in new issue
Block a user