杂问题(不知道归那类)
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;
}
};