leetcode每日刷题

杂问题(不知道归那类)

1、自行编写「标准输入」和「标准输出」逻辑

自行编写「标准输入」和「标准输出」逻辑,以及自行 import/include 需要的 library
https://support.leetcode-cn.com/hc/kb/article/1519140/
给出一个长度为 n 的数组 a,你需要在这个数组中找到一个长度至少为 m 的区间,使得这个区间内的数字的和尽可能小。
格式:
输入:

  • 第一行包含一个正整数 n,m,表示数组的大小和所选区间的最小长度。
  • 第二行包含 n 个整数,中间用空格隔开。
    输出:
  • 输出仅包含一个正整数,表示所选区间的和。
    示例:

输入:
5 3
1 2 3 4 5
输出:6

n, m = map(int, input().split())
a = [0] + list(map(int, input().split()))
pref = [0] * (n + 1)
mx = [0] * (n + 1)
for i in range(1, n + 1):
    pref[i] = pref[i - 1] + a[i]
    mx[i] = max(pref[i], mx[i - 1])
from functools import reduce
print(reduce(min, [pref[i] - mx[i - m] for i in range(m, n + 1)], 1 << 30))

解决溢出问题

7.整数反转

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 假设环境不允许存储 64
位整数(有符号或无符号)。

在这里插入图片描述32位 int型最大和最小范围
C++ INT_MIN INT_MAX
python 自己设一个INT_MIN=-231,INT_MAX=231-1

class Solution {
public:
    int reverse(int x) {
        int rev = 0;
        while (x != 0) {
            if (rev < INT_MIN / 10 || rev > INT_MAX / 10) {
                return 0;
            }
            int digit = x % 10;
            x /= 10;
            rev = rev * 10 + digit;
        }
        return rev;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值