LeetCode Weekly Contest 24
1, 543. Diameter of Binary Tree
维护左右子树的高度,同时更新结果,返回以该节点结束的最大长度。递归调用。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int res;
int work(TreeNode* root) {
if(!root) return ;
int a = work(root->left), b = work(root->right);
res = max(res, a + b + );
return max(a, b) + ;
}
int diameterOfBinaryTree(TreeNode* root) {
res = ;
work(root);
if(res >= ) res -= ;
return res;
}
};
2. 538. Convert BST to Greater Tree
利用bst的有序性,一次遍历,同时维护后缀和,更新节点。递归调用。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int s;
void work(TreeNode* root) {
if(!root) return;
if(!root->left && !root->right) {
root->val += s;
s = root->val;
return;
}
if(root->right) work(root->right);
root->val += s;
s = root->val;
work(root->left);
}
TreeNode* convertBST(TreeNode* root) {
s = ;
work(root);
return root;
}
};
3. 542. 01 Matrix
简单的bfs,初始为0的节点加入队列,然后更新相邻节点,直到最后的结果为空。
int dx[] = {, -, , };
int dy[] = {, , , -};
class Solution {
public: int n, m;
bool check(int x, int y) {
if(x >= && x < n && y >= && y < m) return ;
return ;
}
vector<vector<int>> updateMatrix(vector<vector<int>>& matrix) {
n = matrix.size();
m = matrix[].size();
typedef pair<int, int> pii;
vector<vector<int>> res(n, vector<int>(m, INT_MAX));
queue<pii> q;
for (int i = ; i < n; i++) {
for (int j = ; j < m; j++) {
if(matrix[i][j] == ) {
res[i][j] = ;
q.push({i, j});
}
}
}
int x, y, v;
while(!q.empty()) {
x = q.front().first, y = q.front().second;
q.pop();
v = res[x][y];
for (int i = ; i < ; i++) {
int cx = x + dx[i], cy = y + dy[i];
if(check(cx, cy)) {
if(res[cx][cy] > v + ) {
res[cx][cy] = v + ;
q.push({cx, cy});
}
}
}
}
return res;
}
};
4. 544. Output Contest Matches
一个队的rank在整个过程是不变的,都是第一个元素决定的,然后每次生成新节点,维护下顺序,第一个和最后一个合并,直到只剩一个为止。
class Solution {
public: string findContestMatch(int n) {
vector<string> a;
for (int i = ; i < n / ; i++) {
stringstream ss;
ss << "(" << i + << "," << (n - i) << ")";
a.push_back(ss.str());
}
vector<string> b;
int sz = a.size();
while(a.size() > ) {
b.clear();
sz = a.size();
for (int i = ; i < sz / ; i++) {
string t = "(" + a[i] + "," + a[sz - i - ] + ")";
b.push_back(t);
}
swap(a, b);
}
return a[];
}
};
LeetCode Weekly Contest 24的更多相关文章
- LeetCode Weekly Contest 8
LeetCode Weekly Contest 8 415. Add Strings User Accepted: 765 User Tried: 822 Total Accepted: 789 To ...
- leetcode weekly contest 43
leetcode weekly contest 43 leetcode649. Dota2 Senate leetcode649.Dota2 Senate 思路: 模拟规则round by round ...
- LeetCode Weekly Contest 23
LeetCode Weekly Contest 23 1. Reverse String II Given a string and an integer k, you need to reverse ...
- Leetcode Weekly Contest 86
Weekly Contest 86 A:840. 矩阵中的幻方 3 x 3 的幻方是一个填充有从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等. 给定一个 ...
- LeetCode Weekly Contest
链接:https://leetcode.com/contest/leetcode-weekly-contest-33/ A.Longest Harmonious Subsequence 思路:hash ...
- 【LeetCode Weekly Contest 26 Q4】Split Array with Equal Sum
[题目链接]:https://leetcode.com/contest/leetcode-weekly-contest-26/problems/split-array-with-equal-sum/ ...
- 【LeetCode Weekly Contest 26 Q3】Friend Circles
[题目链接]:https://leetcode.com/contest/leetcode-weekly-contest-26/problems/friend-circles/ [题意] 告诉你任意两个 ...
- 【LeetCode Weekly Contest 26 Q2】Longest Uncommon Subsequence II
[题目链接]:https://leetcode.com/contest/leetcode-weekly-contest-26/problems/longest-uncommon-subsequence ...
- 【LeetCode Weekly Contest 26 Q1】Longest Uncommon Subsequence I
[题目链接]:https://leetcode.com/contest/leetcode-weekly-contest-26/problems/longest-uncommon-subsequence ...
随机推荐
- Delphi 不用标题栏移动窗体
procedure TxxxxForm.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: I ...
- jq 替换DOM layeui 不刷新
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- matlab学习菜单控件的基本用法
编辑菜单项 上下文菜单,即弹出菜单 然后添加一个坐标系 添加回调函数 %余弦曲线x=0:0.01:2*pi;y=cos(x);axes(handles.axes1);%将坐标系的值写进h=plot(x ...
- [NOI2015]软件包管理器 树链剖分_线段树
没有太大难度,刷水有益健康 Code: // luogu-judger-enable-o2 #include <bits/stdc++.h> #define setIO(s) freope ...
- 【学习笔记】有向无环图上的DP
手动博客搬家: 本文发表于20180716 10:49:04, 原地址https://blog.csdn.net/suncongbo/article/details/81061378 首先,感谢以下几 ...
- 学习EXTJS6(8)基本功能-表单的基础表字段Ext.form.field.Basic
Ext.form.field.Basic是表单字段的基类. Ext.form.field.Text Ext.form.field.TextArea Ext.form.field.Number Ext. ...
- 百度之星2014初赛 - 1002 - Grids
先上题目: Grids Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Tota ...
- String 经常用法最优算法实现总结 (一)
<pre name="code" class="java"><span style="font-family: Arial, Hel ...
- POJ 1329
模板题,注意一下输出就可以. #include <iostream> #include <cstdio> #include <cmath> #include < ...
- vim 插件配置博客记录
本来打算自己写下各种经常使用vim的插件安装方法, 可是搜索了下, 发现别人都写过了, 在写一遍也没有意思, 特此记录. Vim 经常使用命令 http://blog.csdn.net/hittata ...