From 7da5e88c64dd0a2fb24fcd827e472cce4eda72ce Mon Sep 17 00:00:00 2001 From: ImAlpha Date: Thu, 28 Sep 2023 18:02:08 -0700 Subject: [PATCH] solved with stack method O(n^2) --- .../Stack/739_Daily_Temperatures.py | 84 +++++++++++-------- NeetCodeRoadmap/Stack/tempCodeRunnerFile.py | 8 +- 2 files changed, 49 insertions(+), 43 deletions(-) diff --git a/NeetCodeRoadmap/Stack/739_Daily_Temperatures.py b/NeetCodeRoadmap/Stack/739_Daily_Temperatures.py index cc1599f..8183833 100644 --- a/NeetCodeRoadmap/Stack/739_Daily_Temperatures.py +++ b/NeetCodeRoadmap/Stack/739_Daily_Temperatures.py @@ -4,43 +4,55 @@ class Solution(object): :type temperatures: List[int] :rtype: List[int] """ - count = 0 - warmer_days = [] - l = 0 - r = 1 - while l < r: - # print(r) - if r == len(temperatures)-1: - if l != len(temperatures)-2: - if temperatures[r] > temperatures[l]: - count += 1 - warmer_days.append(count) - else: - warmer_days.append(0) - l += 1 - r = l + 1 - count = 0 - else: - if temperatures[r] > temperatures[l]: - count += 1 - warmer_days.append(count) - else: - warmer_days.append(0) - break - elif temperatures[r] > temperatures[l]: - count += 1 - warmer_days.append(count) - count = 0 - l += 1 - r = l + 1 - else: - r += 1 - count += 1 - warmer_days.append(0) - return warmer_days + # Two pointer method, timed out O(n^2) + # count = 0 + # warmer_days = [] + # l = 0 + # r = 1 + # while l < r: + # # print(r) + # if r == len(temperatures)-1: + # if l != len(temperatures)-2: + # if temperatures[r] > temperatures[l]: + # count += 1 + # warmer_days.append(count) + # else: + # warmer_days.append(0) + # l += 1 + # r = l + 1 + # count = 0 + # else: + # if temperatures[r] > temperatures[l]: + # count += 1 + # warmer_days.append(count) + # else: + # warmer_days.append(0) + # break + # elif temperatures[r] > temperatures[l]: + # count += 1 + # warmer_days.append(count) + # count = 0 + # l += 1 + # r = l + 1 + # else: + # r += 1 + # count += 1 + # warmer_days.append(0) + # return warmer_days + + # Stack Method + res = [0] * len(temperatures) + stack = [] # contains pair of [temp, index] + + for i, t in enumerate(temperatures): #looping through temperatures array and their index + while stack and t > stack[-1][0]: # is our stack empty and is our temperature greater than the top of our stack + stackT, stackInd = stack.pop() + res[stackInd] = (i - stackInd) # compute the days it took us to find a higher temperature + stack.append((t,i)) # append to the stack the temperature and index + return res obj = Solution() -# print(obj.dailyTemperatures([73,74,75,71,69,72,76,73])) # [1,1,4,2,1,1,0,0] +print(obj.dailyTemperatures([73,74,75,71,69,72,76,73])) # [1,1,4,2,1,1,0,0] # print(obj.dailyTemperatures([30,40,50,60])) # [1,1,1,0] # print(obj.dailyTemperatures([55,38,53,81,61,93,97,32,43,78])) # [3,1,1,2,1,1,0,1,1,0] -print(obj.dailyTemperatures([77,77,77,77,77,41,77,41,41,77])) # [0,0,0,0,0,1,0,2,1,0] \ No newline at end of file +# print(obj.dailyTemperatures([77,77,77,77,77,41,77,41,41,77])) # [0,0,0,0,0,1,0,2,1,0] \ No newline at end of file diff --git a/NeetCodeRoadmap/Stack/tempCodeRunnerFile.py b/NeetCodeRoadmap/Stack/tempCodeRunnerFile.py index 3b61a10..9b26d4f 100644 --- a/NeetCodeRoadmap/Stack/tempCodeRunnerFile.py +++ b/NeetCodeRoadmap/Stack/tempCodeRunnerFile.py @@ -1,7 +1 @@ - elif r == len(temperatures)-1: - if l != len(temperatures)-2: - l += 1 - r = l + 1 - else: - warmer_days.append(0) - break \ No newline at end of file +0]*len(temperatures) \ No newline at end of file