跟着专注于计算机视觉的AndyJ的妈妈我学算法之每日一题不是leetcode题每次移动一个数字排序
程序员文章站
2022-06-15 21:10:06
题目是这样的:有一个乱序的长度为n的,元素为1~n的,不重复的数组每次只能将一个数字移动到数组的最前面最少移动次数是多少这个题就是找规律差不多,找最大和第二大,如果第二大在最大的左面,不动,如果在右面,赶快移到左面(移的晚,需要调整的数字更多,比如[2,1,4,3],尽快将3移动到最左,好了,这个例子也好像不形象。。。),不知道对不对,代码如下:class solution: count = 0 def backtrace(self, nums): n = len...
题目
是这样的:
有一个乱序的长度为n的,元素为1~n的,不重复的数组
每次只能将一个数字移动到数组的最前面
最少移动次数是多少
这个题就是找规律差不多,找最大和第二大,如果第二大在最大的左面,不动,如果在右面,赶快移到左面(移的晚,需要调整的数字更多,比如[2,1,4,3],尽快将3移动到最左,好了,这个例子也好像不形象。。。),不知道对不对,代码
如下:
class solution:
count = 0
def backtrace(self, nums):
n = len(nums)
if n==1:
return
i = nums.index(n)
j = nums.index(n-1)
if i>j:
self.backtrace(nums[:i]+nums[i+1:])
else:
self.count += 1
self.backtrace([nums[j]]+nums[:i]+nums[i+1:j]+nums[j+1:])
# m = int(input())
# res = [int(i) for i in input().split()]
# nums = res[:m]
nums = [3,1,4,5,2,6,7]
a = solution()
a.backtrace(nums)
print(a.count)
好了。
本文地址:https://blog.csdn.net/mianjiong2855/article/details/107657816