leecode第二次打卡

1、加一

class Solution(object):
    def plusOne(self, digits):
        l = len(digits)    首先得到数组的长度
        sum = 0
        for i in range(l):                        对数组中存储的单个数字进行转换
            sum += digits[i]*pow(10,l-i-1)        如1,2,3   转换:3*10(l-i-1)
        sum += 1                                  sum加一
        s = str(sum)
        list1 = list(s)
        list2 = list(map(int,list1))               将数字逐个分割存储在数组中
        return list2

 2、寻找数组的中心下标

class Solution(object):
    def pivotIndex(self, nums):
        l = len(nums)
        for i in range(l):
            if sum(nums[:i]) == m(nums[i+1:l]): 遍历整个列表,要是遍历要素左边的数字的和等于
                return i                        它右边的数字的和,则返回这个要素的数组下标
        return -1

 3、轮转数组

 

class Solution(object):
    def rotate(self, nums, k):
        l = len(nums)
        n = k%l               若轮转长度与数组长度相等,相当于没有轮转,故k%l才是真正的的轮转个数
        nums[:] = nums[l-n:]+nums[:l-n]      

4、旋转图像

l = len(matrix)
        t = [[0] * l for _ in range(l)]
        for i in range(l):
            for j in range(l):
                t[i][j]=matrix[l-j-1][i] 
        matrix[:] = t

 5、螺旋矩阵

class Solution(object):
    def spiralOrder(self, matrix):
        l = len(matrix)
        dx = [0,1,0,-1]       #控制行号,在某一行上遍历时取0,向下换行取1,向上换行取-1
        dy = [1,0,-1,0]       #控制列号,向右移动加一,向左移动减一
        c = len(matrix[0])
        r = len(matrix)
        total = c*r
        s = []
        visited =[[0]*c for i in range(r)]
        index = 0
        row = 0
        column = 0
        for j in range(total):
            s.append(matrix[row][column])
            visited[row][column] = 1
            nextrow = row + dx[index]        #nextrow到下一行位置
            nextcolumn = column + dy[index]  #到下一列位置
            if (nextrow<0 or nextrow >=r or nextcolumn < 0 or nextcolumn >= c or     visited[nextrow][nextcolumn]==1):            #判断下一位置是否超过界限,是否已被遍历
                index = (index+1)%4          #当下一位置超过界限时意味着改变方向
            row += dx[index]
            column += dy[index]
        return s

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值