Skip to content

Commit b250e67

Browse files
committed
更新周赛163临时文件
1 parent 51e9d0d commit b250e67

6 files changed

+549
-8
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#include "public.h"
2+
3+
//
4+
//Ä£Äâ
5+
6+
class Solution {
7+
public:
8+
vector<vector<int>> shiftGrid(vector<vector<int>>& grid, int k) {
9+
int maxr = grid.size();
10+
int maxc = grid[0].size();
11+
for (int i = 0; i < k; ++i)
12+
{
13+
vector<vector<int>> next(maxr, vector<int>(maxc, -9999));
14+
for (int r = 0; r < maxr; ++r)
15+
{
16+
for (int c = 1; c < maxc; ++c)
17+
{
18+
next[r][c] = grid[r][c];
19+
}
20+
}
21+
for (int r = 1; r < maxr; ++r)
22+
{
23+
next[r][0] = grid[r - 1][maxc - 1];
24+
}
25+
next[0][0] = grid[maxr - 1][maxc - 1];
26+
27+
grid = next;
28+
}
29+
return grid;
30+
}
31+
};
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#include "BinaryTree.h"
2+
3+
/**
4+
* Definition for a binary tree node.
5+
* struct TreeNode {
6+
* int val;
7+
* TreeNode *left;
8+
* TreeNode *right;
9+
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
10+
* };
11+
*/
12+
class FindElements {
13+
private:
14+
//±©Á¦,ת³Éunordered_set
15+
unordered_set<int> us;
16+
void recu(TreeNode* root, int prev)
17+
{
18+
if (!root) return;
19+
us.insert(prev);
20+
recu(root->left, 2 * prev + 1);
21+
recu(root->right, 2 * prev + 2);
22+
}
23+
24+
public:
25+
FindElements(TreeNode* root) {
26+
recu(root, 0);
27+
}
28+
29+
bool find(int target) {
30+
return (us.find(target) != us.end());
31+
}
32+
};
33+
34+
/**
35+
* Your FindElements object will be instantiated and called as such:
36+
* FindElements* obj = new FindElements(root);
37+
* bool param_1 = obj->find(target);
38+
*/
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
#include "public.h"
2+
3+
//正数数组
4+
//分类, 搞清楚最长长度
5+
6+
class Solution {
7+
public:
8+
int maxSumDivThree(vector<int>& nums) {
9+
multiset<int> ms0;
10+
multiset<int> ms1;
11+
multiset<int> ms2;
12+
13+
for (auto& n : nums)
14+
{
15+
if ((n % 3) == 0)
16+
{
17+
ms0.insert(n);
18+
}
19+
else if ((n % 3) == 1)
20+
{
21+
ms1.insert(n);
22+
}
23+
else
24+
{
25+
ms2.insert(n);
26+
}
27+
}
28+
29+
//数学题,暴力分类
30+
31+
int ms1mod3 = ms1.size() % 3;
32+
int ms2mod3 = ms2.size() % 3;
33+
34+
int sum = accumulate(nums.begin(), nums.end(), 0);
35+
int del = 0;
36+
37+
if (ms1mod3 == 0)
38+
{
39+
if (ms2mod3 == 0)
40+
{
41+
;
42+
}
43+
else if (ms2mod3 == 1)
44+
{
45+
//要么删掉ms2最小值, 要么删掉俩ms1最小值如果有的话
46+
del = *ms2.begin();
47+
if (ms1.size() >= 2)
48+
{
49+
int anodel = 0;
50+
anodel = *ms1.begin();
51+
ms1.erase(ms1.begin());
52+
anodel += *ms1.begin();
53+
del = min(del, anodel);
54+
}
55+
}
56+
else //要么删掉俩ms2最小值, 要么删掉一ms1最小值如果有的话
57+
{
58+
del = *ms2.begin();
59+
ms2.erase(ms2.begin());
60+
del += *ms2.begin();
61+
if (ms1.size() >= 1)
62+
{
63+
del = min(del, *ms1.begin());
64+
}
65+
}
66+
}
67+
else if (ms1mod3 == 1)
68+
{
69+
if (ms2mod3 == 0) //要么删掉ms1最小值, 要么删掉俩ms2最小值如果有的话
70+
{
71+
del = *ms1.begin();
72+
if (ms2.size() >= 2)
73+
{
74+
int anodel = 0;
75+
anodel = *ms2.begin();
76+
ms2.erase(ms2.begin());
77+
anodel += *ms2.begin();
78+
del = min(del, anodel);
79+
}
80+
}
81+
else if (ms2mod3 == 1)
82+
{
83+
; //ojbj
84+
}
85+
else //要么删掉俩ms1最小值如果有的话, 要么删掉一ms2最小值
86+
{
87+
del = *ms2.begin();
88+
if (ms1.size() >= 2)
89+
{
90+
int anodel = 0;
91+
anodel = *ms1.begin();
92+
ms1.erase(ms1.begin());
93+
anodel += *ms1.begin();
94+
del = min(del, anodel);
95+
}
96+
}
97+
}
98+
else
99+
{
100+
if (ms2mod3 == 0) //要么删掉俩ms1最小值, 要么删掉一ms2最小值如果有的话
101+
{
102+
del = *ms1.begin();
103+
ms1.erase(ms1.begin());
104+
del += *ms1.begin();
105+
if (ms2.size() >= 1)
106+
{
107+
del = min(del, *ms2.begin());
108+
}
109+
}
110+
else if (ms2mod3 == 1) //要么删掉一个ms1最小值,要么删掉两个ms2最小值如果有的话
111+
{
112+
del = *ms1.begin();
113+
if (ms2.size() >= 2)
114+
{
115+
int anodel = 0;
116+
anodel = *ms2.begin();
117+
ms2.erase(ms2.begin());
118+
anodel += *ms2.begin();
119+
del = min(del, anodel);
120+
}
121+
}
122+
else
123+
{
124+
; //ojbj
125+
}
126+
}
127+
128+
return sum - del;
129+
130+
}
131+
};
132+
133+
/*
134+
int main()
135+
{
136+
Solution* s = new Solution();
137+
vector<int> nums00 = { 2,6,2,2,7 };
138+
cout << s->maxSumDivThree(nums00) << endl;
139+
140+
vector<int> nums0 = { 3,6,5,1,8 };
141+
cout << s->maxSumDivThree(nums0) << endl;
142+
vector<int> nums1 = { 4 };
143+
cout << s->maxSumDivThree(nums1) << endl;
144+
vector<int> nums2 = { 1,2,3,4,4 };
145+
cout << s->maxSumDivThree(nums2) << endl;
146+
return 0;
147+
}
148+
*/

0 commit comments

Comments
 (0)