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
阅读全文
0 0
- lintcode 703. 折叠数组 模拟
- LintCode-数组划分
- LintCode--最小子数组
- LintCode 合并排序数组
- LintCode 数组划分
- LintCode: 最大子数组
- LintCode:数组划分
- LintCode 数组划分
- lintcode 之子数组之和
- lintcode之数组划分
- LintCode: 合并排序数组
- LintCode:数组划分
- LintCode:子数组之和
- lintcode ----奇偶分割数组
- lintcode ----合并排序数组
- lintcode ----最大子数组
- lintcode ----最小子数组
- lintcode ----子数组之和
- 广东工业大学2017新生赛(决赛)-网络同步赛
- 数组相关运算
- SysCallError: (104, 'ECONNRESET')
- 丰富码农的不加班生活,带码农出去玩
- 一步之遥 【最大公约数、最小公倍数的拓展】
- lintcode 703. 折叠数组 模拟
- 网络编程4-socket通信三次握手四次挥手
- Int2Scale进制转换开发手记
- N!
- Python基础浅谈
- 我的第一篇博客
- bzoj2178 圆的面积并(自适应Simpson积分)
- Linux安装ftp(vsftp)教程
- O(logN) 计算经典斐波那契数列的某个数