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
+86
-4
No files matched your search
@@ -61,13 +61,19 @@ are underscores).
|
|||||||
|
|
||||||
Constraints:
|
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:
|
class Solution:
|
||||||
def removeDuplicates(self, nums: list[int]) -> int:
|
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