【leetcode-python-7】496. 下一个更大元素 I
超渣渣原始版(5.67%)
用了两个最烂的顺序遍历。python不用flag退出循环。
class Solution(object):
def nextGreaterElement(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
nums3 = []
nums = []
for j in range(len(nums2)-1):
for z in range(j+1, len(nums2)):
if nums2[j] < nums2[z]:
nums3.append(nums2[z])
break
else:
nums3.append(-1)
nums3.append(-1)
for i in range(len(nums1)):
for k in range(len(nums2)):
if nums1[i] == nums2[k]:
nums.append(nums3[k])
break
return nums
渣渣原始版(59.18%)
用了一个顺序遍历。查找用的哈希表。
class Solution(object):
def nextGreaterElement(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
nums3 = []
nums = []
a = {}
if nums2:
for j in range(len(nums2)-1):
for z in range(j+1, len(nums2)):
if nums2[j] < nums2[z]:
nums3.append(nums2[z])
a[nums2[j]] = nums2[z]
break
else:
nums3.append(-1)
a[nums2[j]] = -1
nums3.append(-1)
a[nums2[-1]] = -1
for i in nums1:
nums.append(a[i])
return nums
else:
return []
参考官方版(98.87%)
哈希表+找最大值用栈。
注:参考题解区官方思路。
class Solution(object):
def nextGreaterElement(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: List[int]
"""
s = []
a = {}
x = []
for i in range(len(nums2)):
while s and nums2[i]>s[-1]:
a[s.pop()] = nums2[i]
s.append(nums2[i])
while s:
a[s.pop()] = -1
for j in nums1:
x.append(a[j])
return x
新手入坑,多多包涵~~