lintcode 703. 折叠数组 模拟

来源:互联网 发布:php获取服务器内存 编辑:程序博客网 时间:2024/05/29 18:22

给一个长度为 n 的数组 nums 和一个长度为 k 的数组 req, 你需要根据要求折叠数组,并输出折叠的结果
1.如果 req[i] = 0 意味着你应该从折叠, 例如:

1 2 3 4 5 6 7 8  ==>   4 3 2 1                       5 6 7 8

2.如果 req[i] = 1 意味着你应该从折叠, 例如:

1 2 3 4 5 6 7 8  ==>   8 7 6 5                       1 2 3 4

更多的例子:

从左到右折叠4 3 2 1  ==>  6 55 6 7 8       3 4              2 1              7 8从右到左折叠6 5  ==>   83 4        12 1        47 8        5           6           3           2           7 
 注意事项

n 为 2 的幂
k 是指数.(例如 n = 2^3 = 8,k = 3)

样例

给出数组 nums = [1, 2, 3, 4, 5, 6, 7, 8] 和 数组 req = [0, 0, 1] 原地改变元素位置为 [8, 1, 4, 5, 6, 3, 2, 7]、


def x_fold(arr,n):long=len(arr)a=arr[:long/2]b=arr[long/2:]if n==0:a=a[::-1]return a,belse:b=b[::-1]return b,adef folding2(nums, req):nums=[nums]for i in req:tmp=[]for num in nums:a,b=x_fold(num,i)tmp.insert(0,a)tmp.append(b)nums=tmp[:]return(nums)class Solution:def folding(self, nums, req):arr=folding2(nums,req)result=[]for i in arr:result.append(i[0])return result




原创粉丝点击