Skip to content

Commit a2166a2

Browse files
committed
Fix missing newline at the end of C.py in AtCoder Beginner Contest 433 for improved code formatting and adherence to PEP 8 standards.
1 parent 8df1a21 commit a2166a2

4 files changed

Lines changed: 46 additions & 1 deletion

File tree

  • atcoder/AtCoder Beginner Contest 433
  • leetcode/Study Plan
    • 1018. 可被 5 整除的二进制前缀
    • 1262. 可被三整除的最大和

atcoder/AtCoder Beginner Contest 433/C.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,4 @@ def solve():
3838
print(ans)
3939

4040
if __name__ == "__main__":
41-
solve()
41+
solve()
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
class Solution:
2+
def prefixesDivBy5(self, nums: List[int]) -> List[bool]:
3+
ans = [False] * len(nums)
4+
x = 0
5+
for i,bit in enumerate(nums):
6+
x = (x << 1 | bit) % 5
7+
ans[i] = x == 0
8+
return ans
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
class Solution {
2+
public:
3+
int maxSumDivThree(vector<int>& nums) {
4+
// 计算所有数字的总和
5+
int s = accumulate(nums.begin(), nums.end(), 0);
6+
7+
// 如果总和已经能被3整除,直接返回
8+
if(s % 3 == 0) return s;
9+
10+
// 按照模3的余数分组:a[0]存余数为0的,a[1]存余数为1的,a[2]存余数为2的
11+
vector<int> a[3];
12+
for(int num: nums) {
13+
a[num % 3].push_back(num);
14+
}
15+
16+
// 对余数为1和2的数组排序,方便后续取最小值
17+
sort(a[1].begin(), a[1].end());
18+
sort(a[2].begin(), a[2].end());
19+
20+
// 如果总和模3余2,交换a[1]和a[2],统一处理为"需要移除余数为1的元素"
21+
// 这样后续逻辑只需要考虑移除1个或2个最小元素的情况
22+
if(s % 3 == 2) {
23+
swap(a[1], a[2]);
24+
}
25+
26+
// 方案1:移除1个最小的余数为1的元素
27+
int ans = a[1].size() ? s - a[1][0] : 0;
28+
29+
// 方案2:移除2个最小的余数为2的元素(因为2+2=4,4%3=1,相当于移除1)
30+
// 取两种方案的最大值
31+
if(a[2].size() > 1) {
32+
ans = max(ans, s - a[2][0] - a[2][1]);
33+
}
34+
35+
return ans;
36+
}
37+
};

leetcode/Study Plan/1262. 可被三整除的最大和/1.go

Whitespace-only changes.

0 commit comments

Comments
 (0)