diff --git a/work/1/Medium/Array/80.remove-duplicates-from-sorted-array-ii.py b/work/1/Medium/Array/80.remove-duplicates-from-sorted-array-ii.py index b41aeb0..73b63a3 100644 --- a/work/1/Medium/Array/80.remove-duplicates-from-sorted-array-ii.py +++ b/work/1/Medium/Array/80.remove-duplicates-from-sorted-array-ii.py @@ -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 diff --git a/work/1/Medium/Stack/901.online-stock-span.py b/work/1/Medium/Stack/901.online-stock-span.py new file mode 100644 index 0000000..d964851 --- /dev/null +++ b/work/1/Medium/Stack/901.online-stock-span.py @@ -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)