python数组反转_python语法:数组的旋转和反转

最近做了很多数组或整数等的旋转或逆序输出等算法,在知乎总结一下,大家一起学习。

题目一:

将包含 n 个元素的数组向右旋转 k 步。

例如,如果 n = 7 , k = 3,给定数组 [1,2,3,4,5,6,7] ,向右旋转后的结果为 [5,6,7,1,2,3,4]。

要求:要求空间复杂度为 O(1) (这里的意思就是别想着新建个列表)

方法一:

class Solution(object):

def rotate(self,nums,k):

lenth = len(nums) -1

if lenth<1 or k<1:

return

#暴力方法,将后面的删掉插到前面

for i in range(k):

nums.insert(0,nums[lenth]) #将最后一个插到前面来

del nums[lenth + 1]#多个一个数所以lenth+1,将插到前面的数字删除

return nums

list= [1,2,4,5,7]

print(Solution().rotate(list,2))

顺便写一下内置函数 del和insert的用法:

insert(位置,元素)

del=> del a[0] 删除坐标为0;del a[1:3]删除坐标1到3的元素;del a 删除a:

方法二:

比较骚,就是使用reverse:

1 2 3 4 5 6   如果k = 2 的话, 会变成 5 6 1 2 3 4

6 5 4 3 2 1   先翻转整个数组

5 6 4 3 2 1   翻转前k个数字

5 6 1 2 3 4   翻转后面几个数字

class Solution(object):

def rotate(self, nums, k):

lenth = len(nums) - 1

if lenth < 1 or k < 1:

return

if (k < lenth):

nums.reverse()

nums[0:k] = reversed(nums[0:k])

nums[k:] = reversed(nums[k:])

else:

for i in range (k):

nums.insert(0, nums[lenth])

del nums[lenth + 1]

return nums

list = [1,2,3,4]

print(Solution().rotate(list,2))

说实话比较适合长的数组。

题目二:

反转一个整数:如123=》321 , -123=》-321,120=》21

方法一:正常整数方法实现,利用余数*10累加的方法完成。需要注意的是,python对整数除法采用“向下取整”机制,所以正数和负数要区别运算

def reverse(self, x):

"""

:type x: int

:rtype: int

"""

num = 0

if x == 0:

return 0

if x < 0:

x = -x

while x != 0:

num = num*10 + x%10

x = x/10

num = -num

else:

while x != 0:

num = num*10 + x%10

x = x/10

if num>pow(2,31)-1 or num < pow(-2,31):

return 0

return num

方法二:变成字符串再反转

def reverse(self, x):

"""

:type x: int

:rtype: int

"""

plus_minus = ""

reverse_x = ""

if x<0:

plus_minus = "-"

x = -x

for i in str(x):

reverse_x = i + reverse_x

reverse_x = plus_minus +reverse_x

if int(reverse_x)>pow(2,31)-1 or int(reverse_x)

return 0

return int(reverse_x)

题目三:

将一个数组逆序输出

方法一:

def TheReverseArray(list):

length = len(list)

a=[]

for i in range(length):

a.append(list[length - i-1])

return a

print(TheReverseArray([1,2,4,5,2,3]))

方法二:

数组前后交换

def TheReverseArray(list):

N = len(list)

for i in range(int(len(list) / 2)):

list[i], list[N - i - 1] = list[N - i - 1], list[i]

return list

print(TheReverseArray([1,3,2,4]))

想到其他办法后续补充~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值