如何解决使用正整数Python在数组中找到最右边的元素
我正在研究代码逻辑,以查找比给定元素大得多的元素。
例如,如果输入数组为[3,7,9,4,1]
,则输出应为[4,1]
。请注意,由于9
是最大的元素,因此它将保持不变,并且与位于右边界的元素类似。
这是我的工作代码,
def rightmost_greater(arr):
n=len(arr)
left=0
right=n-1
L=[]
while left<=right:
if arr[left]>arr[right]:
right-=1
elif arr[left]==arr[right]:
L.append(arr[left])
left+=1 # move to next element
right=n-1 # reset the right pointer
else:
L.append(arr[right])
left+=1 # move to next element
right=n-1 # reset the right pointer
return L
如您所见,这段代码似乎很罗word,我多次重置了正确的指针;是否有可能使用一种有效的方式来编写代码(最好是递归逻辑)。意见非常感谢。谢谢
解决方法
这是一种逻辑几乎相同,但递归有效的解决方案。看看是否有帮助。
arr=[3,7,9,4,1]
n=len(arr)
L=[]
def rightmost_greater(arr,left,right):
if left<=right:
if arr[left]>arr[right]:
rightmost_greater(arr,right-1)
else:
L.append(arr[right])
rightmost_greater(arr,left+1,n-1)
rightmost_greater(arr,n-1)
print(L)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。