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的更多相关文章

  1. LeetCode Weekly Contest 8

    LeetCode Weekly Contest 8 415. Add Strings User Accepted: 765 User Tried: 822 Total Accepted: 789 To ...

  2. leetcode weekly contest 43

    leetcode weekly contest 43 leetcode649. Dota2 Senate leetcode649.Dota2 Senate 思路: 模拟规则round by round ...

  3. LeetCode Weekly Contest 23

    LeetCode Weekly Contest 23 1. Reverse String II Given a string and an integer k, you need to reverse ...

  4. Leetcode Weekly Contest 86

    Weekly Contest 86 A:840. 矩阵中的幻方 3 x 3 的幻方是一个填充有从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等. 给定一个 ...

  5. LeetCode Weekly Contest

    链接:https://leetcode.com/contest/leetcode-weekly-contest-33/ A.Longest Harmonious Subsequence 思路:hash ...

  6. 【LeetCode Weekly Contest 26 Q4】Split Array with Equal Sum

    [题目链接]:https://leetcode.com/contest/leetcode-weekly-contest-26/problems/split-array-with-equal-sum/ ...

  7. 【LeetCode Weekly Contest 26 Q3】Friend Circles

    [题目链接]:https://leetcode.com/contest/leetcode-weekly-contest-26/problems/friend-circles/ [题意] 告诉你任意两个 ...

  8. 【LeetCode Weekly Contest 26 Q2】Longest Uncommon Subsequence II

    [题目链接]:https://leetcode.com/contest/leetcode-weekly-contest-26/problems/longest-uncommon-subsequence ...

  9. 【LeetCode Weekly Contest 26 Q1】Longest Uncommon Subsequence I

    [题目链接]:https://leetcode.com/contest/leetcode-weekly-contest-26/problems/longest-uncommon-subsequence ...

随机推荐

  1. Python3编写自动签到服务程序

    公司加班的餐补需要登录网站签到领取,有时候会忘记,于是自己用Python写了小程序来自动签到.刚开始只是做了自己用,直接写的黑框程序,后来给同事用,就打包成exe.再后来有人说要写成window服务会 ...

  2. 3、scala函数入门

    1.定义函数 2.在代码块中定义函数体 3.递归函数与返回类型 4.默认参数 5.带名参数 6.变长参数 7.使用序列调用变长参数  8.过程 9.lazy值              10.异常 1 ...

  3. 微信公众号API使用总结

    官网:    https://mp.weixin.qq.com/ API:          http://mp.weixin.qq.com/wiki/home/index.html 接口调试工具:h ...

  4. AI:AI是什么?

    古老的哲学对科学有永远的借鉴意义,科学上的咬文嚼字往往会让其丧失完备性. 一.AI是什么 你看起来它有多好,它就有多好.本质只能通过表象来描述,在色即是空的逻辑里,图灵测试也许是最精准的AI测试方式. ...

  5. Bootstrap 模态框(Modal)带参数传值实例

    模态框(Modal)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等. 为了实现父窗体与其的交互,通常需要向其传值,实现 ...

  6. gitlab变更邮箱后发送邮件报SSLError错误

    测试发送邮件: gitlab-rails console Notify.test_email('test666@example.com', 'Message Subject', 'Message Bo ...

  7. python时间序列按频率生成日期

    有时候我们的数据是按某个频率收集的,比如每日.每月.每15分钟,那么我们怎么产生对应频率的索引呢?pandas中的date_range可用于生成指定长度的DatetimeIndex.我们先看一下怎么生 ...

  8. 分别用for循环,while do-while以及递归方法实现n的阶乘!

    分别用for循环,while do-while以及递归方法实现n的阶乘! 源码: package book;import java.util.Scanner;public class Access { ...

  9. Springmvc中ajax与jason应用

    Springmvc中ajax与jason应用 相关依赖包 json数据转换的jar包 jackson-annotations-2.5.4 jackson-core-2.5.4 jackson-data ...

  10. 20190218-学习python使用shelve遇到raise error, "db type could not be determined"

    照书上敲代码,运行了提示raise error, "db type could not be determined",现场如下: ubuntu-vm:~/code/massageb ...