ARST打卡第183周[183/521]

Algorithm

lc324_摆动序列2

做了比较久,但是没有考虑到可能先降序再升序的情况,导致卡住了…然后一直卡在了37%的AC率…

见过最变态的中等题…

看题解又看了60多分钟,真的很绕…而且题解的代码太不通俗易懂了,详见我的注释

进阶思路需要花更多的时间,但是投入产出比对于自己目前较低,pass,有兴趣的看:
https://leetcode.cn/problems/wiggle-sort-ii/solutions/1627858/bai-dong-pai-xu-ii-by-leetcode-solution-no0s/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public:
void wiggleSort(vector<int>& nums) {
int n = nums.size();
vector<int> arr = nums;
sort(arr.begin(), arr.end());
int x = (n + 1) / 2;
// https://leetcode.cn/problems/wiggle-sort-ii/solutions/1627858/bai-dong-pai-xu-ii-by-leetcode-solution-no0s/
// 对于 j = x - 1 理解:
// n为偶数,x=(n+1)/2=n/2, 所以j = n-1-x(题解推导) = n/2-1 = x-1
// n为奇数,x=(n+1)/2=n/2+1[这里是计算机的n/2]
// ,所以j=n-x(题解推导)=n - (n+1)/2=n/2 (计算机得到奇数除以2就是要少掉那个1)=x-1,这里很难理解,理解了一个小时,绝了,很绕,绕很久才能统一起来
for (int i = 0, j = x - 1, k = n - 1; i < n; i += 2, j--, k--) {
nums[i] = arr[j];
if (i + 1 < n) {
nums[i + 1] = arr[k];
}
}
}
};

lc110_平衡二叉树

当时笔试只剩9分钟了,有点慌了,于是简单题没有写完,汗颜…

递归记忆,这里就是后序遍历,先左右节点,然后根节点

链接:https://leetcode.cn/problems/balanced-binary-tree/solutions/377216/ping-heng-er-cha-shu-by-leetcode-solution/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
public:
int height(TreeNode* root) {
if (root == NULL) {
return 0;
}
int leftHeight = height(root->left);
int rightHeight = height(root->right);
if (leftHeight == -1 || rightHeight == -1 || abs(leftHeight - rightHeight) > 1) {
return -1;
} else {
return max(leftHeight, rightHeight) + 1;
}
}

bool isBalanced(TreeNode* root) {
return height(root) >= 0;
}
};

Review

【TED演讲】我们来讨论死亡

提前和家人们讨论自己对于死的计划,控制自己的死,是比较好的方式,而不是当不能说话的时候,无法按照自己的意愿结束

你就是你,你是重要的,直到你生命的最后一刻

Tips

Go mod:一文教你真正用起来Go Module依赖管理

Share

mit6.824学习资料分享:

视频:

课表+实验链接:
http://nil.csail.mit.edu/6.824/2020/schedule.html