Algorithm
lc2455_可被三整除的偶数的平均值
题解:
就是按照题意模拟
其中是小学数学原理,各数位的和能被3整除,那就是能被3整除…
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
// 时间8 ms击败74.81% 内存13.3 MB 击败50%
class Solution {
public:
int averageValue(vector<int>& nums) {
double sum = 0;
int cnt = 0;
for (auto x : nums) {
if (x & 1) {
continue ;
}
int tmp_sum = 0;
int src_x = x;
while (x) {
tmp_sum += x % 10;
x /= 10;
}
if (tmp_sum % 3 == 0) {
sum += src_x;
cnt++;
}
}
return cnt ? (int)floor(sum/cnt) : 0;
}
};
|
后面一想,好像根本不用各数位,直接判断被整除就行…(不过这个好像取模导致用内存更多了)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
// 时间8 ms击败74.81% 内存13.3 MB 击败37.60%
class Solution {
public:
int averageValue(vector<int>& nums) {
double sum = 0;
int cnt = 0;
for (auto x : nums) {
if (x & 1) {
continue ;
}
if (x % 3 == 0) {
sum += x;
cnt++;
}
}
return cnt ? (int)floor(sum/cnt) : 0;
}
};
|
题解更是在这个基础上更简洁了…
- 整除3和判断偶数结合为整除6
- 然后向下取整其实就是计算机int相除的自然结果, 不用floor…
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
// 时间4 ms击败95.35% 内存13.4 MB击败 30.23%
class Solution {
public:
int averageValue(vector<int>& nums) {
int total = 0, k = 0;
for (int a : nums) {
if (a % 6 == 0) {
total += a;
k++;
}
}
return k > 0 ? total / k : 0;
}
};
// 链接:https://leetcode.cn/problems/average-value-of-even-numbers-that-are-divisible-by-three/solutions/2284975/ke-bei-san-zheng-chu-de-ou-shu-de-ping-j-vruh/
|
Review
【TED演讲】如何实现你的目标
如何实现目标:
- 不要过分关注目标 – 这样你只会焦虑目标为啥没达成,而无法采取有效的行动
- 关注自身的行动 – 关注自己能够为目标做什么事情,因为目标是不可控的,只有自身行为是可控的
- 把目标细化成每天的行为,然后不断迭代,可能最终无法成功,但是可以通过不断努力接近,而且尽力而为,问心无愧
Tips
Rocksdb Compaction源码详解
Share-shell中'
的奇妙作用
shell中使用了单引号 ’ 来定义字符串,这意味着大部分特殊字符都会被视为普通字符,不需要进行转义。
- 所以整个字符串可以以
'
来启动停止,这是shell的特性。
1
2
3
4
|
## mystring='hel|o|_$()/\/\LD,奇怪'
## echo $mystring
hel|o|_$()/\/\LD,奇怪
|
- 如果你的字符串需要
'
,那么就用'
拼接两段字符串,然后在来两段字符串中间 转义'
1
2
3
4
|
## mystring='Yes, it'\''s my computer.'
## echo $mystring
Yes, it's my computer.
|