排序最小移动次数
输入一个list
每次随机从这个list中拿一个数放到队尾,问最少多少次移动可以使得整个list递增有序。
def test(inData):
# 将出现逆序的数字放到最后
nums = list(map(int, inData.split(' ')))
nums1 = nums.copy()
return min(computeZheng(nums),computeFan(nums1))
def computeZheng(nums):
n = len(nums)
i = 0
count = 0
while i < n - 1:
if nums[i] > nums[i+1]:
num = nums.pop(i)
print(num)
nums.append(num)
count += 1
else:
i += 1
print(nums)
return count
def check(nums, n):
for i in range(n-1):
if nums[i] > nums[i+1]:
return False
return True
def computeFan(nums):
n = len(nums)
count = 0
while not check(nums, n):
i = n - 1
while i > 0:
if nums[i] < nums[i-1]:
num = nums.pop(i-1)
print(num)
nums.append(num)
count += 1
i -= 1
else:
i -= 1
print(nums)
return count
print(test("19 5 9 255"))
连续子串最大和
输入一个list
求这个list的所有连续子串,将这些子串中的数字求和,找到和最大的那个子串对应的和。
def test(array):
# 求所有子数组
arr = list(map(int, array))
n = len(arr)
MaxSum = 0
for j in range(1, n):
for i in range(j):
sub = list(arr[i:j])
sum_sub = sum(sub)
if sum_sub > MaxSum:
MaxSum = sum_sub
return MaxSum
print(test(["6","-3","-2","7","-15","1","2","2"]))