算法Day02–1120、1121刷题:数组–59. 螺旋矩阵 II,58.区间和(卡码网),44. 开发商购买土地(卡码网)

算法Day02–1120、1121刷题:数组–59. 螺旋矩阵 II,58.区间和(卡码网),44. 开发商购买土地(卡码网)

题目用时
59. 螺旋矩阵 II30min
58.区间和(卡码网)20min
44. 开发商购买土地(卡码网)没写完

59. 螺旋矩阵 II

[!NOTE]

给你一个正整数 n ,生成一个包含 1n^2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix

class Solution(object):
    def generateMatrix(self, n):
        """
        :type n: int
        :rtype: List[List[int]]
        """
        up, down = 0, n-1
        left, right = 0, n-1
        a, b = 0, 0
        matrix = [[0 for i in range(n)] for j in range(n)]
        i = 0
        while left <= right and up <= down:

            if a == up:
                up += 1
                for b in range(left, right+1):
                    matrix[a][b] = i+1
                    i += 1
                    continue
            elif b == right:
                right -= 1
                for a in range(up, down+1):
                    matrix[a][b] = i+1
                    i += 1
                    continue
            elif b == left:
                left += 1
                for a in range(down, up-1, -1):
                    matrix[a][b] = i+1
                    i += 1
                    continue
            elif a == down:
                down -= 1
                for b in range(right, left-1, -1):
                    matrix[a][b] = i+1
                    i += 1
                    continue
        return matrix

58.区间和(卡码网)

[!NOTE]

题目描述:给定一个整数数组 Array,请计算该数组在每个指定区间内元素的总和。

输入描述:第一行输入为整数数组 Array 的长度 n,接下来 n 行,每行一个整数,表示数组的元素。随后的输入为需要计算总和的区间下标:a,b (b > = a),直至文件结束。

输出描述:输出每个指定区间内元素的总和。

import sys
input = sys.stdin.read

def main():
    data = input().split()
    index = 0
    n = int(data[index])
    index += 1
    vec = []
    for i in range(n):
        vec.append(int(data[index + i]))
    index += n

    p = [0] * n
    presum = 0
    for i in range(n):
        presum += vec[i]
        p[i] = presum

    results = []
    while index < len(data):
        a = int(data[index])
        b = int(data[index + 1])
        index += 2

        if a == 0:
            sum_value = p[b]
        else:
            sum_value = p[b] - p[a - 1]

        results.append(sum_value)

    for result in results:
        print(result)

if __name__ == "__main__":
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值