【LeetCode】从contest-21开始。(一般是10个contest写一篇文章)
【LeetCode Weekly Contest 29】【2017/04/23】 第17周
- Binary Tree Tilt (3)
- Array Partition I (6)
- Longest Line of Consecutive One in Matrix (8)
- Find the Closest Palindrome (10)
第一题: 563. Binary Tree Tilt [easy]
别人写几行,我写的非常啰嗦==。树后序遍历。代码是重写过的。
Given a binary tree, return the tilt of the whole tree.
The tilt of a tree node is defined as the absolute difference between the sum of all left subtree node values and the sum of all right subtree node values. Null node has tilt 0.
The tilt of the whole tree is defined as the sum of all nodes' tilt.
Example:
Input:
1
/ \
2 3
Output: 1
Explanation:
Tilt of node 2 : 0
Tilt of node 3 : 0
Tilt of node 1 : |2-3| = 1
Tilt of binary tree : 0 + 0 + 1 = 1
/**
* 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 findTilt(TreeNode* root) {
int ans = ;
dfs(root, ans);
return ans;
}
int dfs(TreeNode* root, int& ans) {
if (!root) return ;
int l = dfs(root->left, ans);
int r = dfs(root->right, ans);
root->val = root->val + l + r;
ans += abs(l-r);
return root->val;
}
};
第二题: 561. Array Partition I [easy]
给2N个数,两两配对之后,使得每对最小值的和加起来最大。sort一下,随便搞搞。
class Solution {
public:
int arrayPairSum(vector<int>& nums) {
if (nums.empty()) return ;
sort(nums.begin(), nums.end());
int ans = ;
for(int i = ; i < nums.size(); i += ) {
ans += nums[i];
}
return ans;
}
};
第三题: 562. Longest Line of Consecutive One in Matrix [Medium]
给一个01矩阵, 横,竖,对角线,和反对角线找连续1的最长一条线。搜索。
【别人都写四个方向,结果我写了八个方向还想着去剪枝orz】
class Solution {
public:
vector<pair<int, int>> dir{{, }, {, }, {, }, {-, }};
int longestLine(vector<vector<int>>& M) {
if (M.size() == || M[].size() == ) { return ; }
int ans = ;
dfs(M, ans);
return ans;
}
void dfs (vector<vector<int>>& M, int& ans) {
for (int i = ; i < M.size(); ++i) {
for (int j = ; j < M[].size(); ++j) {
if (M[i][j] == ) {
for(int idx = ; idx < ; ++idx) {
int length = ;
go(M, i, j, idx, length);
ans = max(ans, length);
}
}
}
}
}
bool valid (vector<vector<int>>& M, int newI, int newJ) {
if (newI >= && newI < M.size() && newJ >= && newJ < M[].size()) {
return true;
}
return false;
}
void go(vector<vector<int>>& M, int I, int J, const int idx, int& length) {
int newI = I + dir[idx].first, newJ = J + dir[idx].second;
if (valid(M, newI, newJ) && M[newI][newJ]) {
length++;
go(M, newI, newJ, idx, length);
}
return;
}
};
第四题: 564. Find the Closest Palindrome [Hard]
不会做。。。。。。。。。。。。。。
【LeetCode】从contest-21开始。(一般是10个contest写一篇文章)的更多相关文章
- 【Leetcode周赛】从contest-91开始。(一般是10个contest写一篇文章)
Contest 91 (2018年10月24日,周三) 链接:https://leetcode.com/contest/weekly-contest-91/ 模拟比赛情况记录:第一题柠檬摊的那题6分钟 ...
- 【Leetcode周赛】从contest1开始。(一般是10个contest写一篇文章)
注意,以前的比赛我是自己开了 virtual contest.这个阶段的目标是加快手速,思考问题的能力和 bug-free 的能力. 前面已经有了100个contest.计划是每周做三个到五个cont ...
- 【Leetcode周赛】从contest-81开始。(一般是10个contest写一篇文章)
Contest 81 (2018年11月8日,周四,凌晨) 链接:https://leetcode.com/contest/weekly-contest-81 比赛情况记录:结果:3/4, ranki ...
- 【Leetcode周赛】从contest-71开始。(一般是10个contest写一篇文章)
Contest 71 () Contest 72 () Contest 73 (2019年1月30日模拟) 链接:https://leetcode.com/contest/weekly-contest ...
- 【Leetcode周赛】从contest-111开始。(一般是10个contest写一篇文章)
Contest 111 (题号941-944)(2019年1月19日,补充题解,主要是943题) 链接:https://leetcode.com/contest/weekly-contest-111 ...
- 【Leetcode周赛】从contest-121开始。(一般是10个contest写一篇文章)
Contest 121 (题号981-984)(2019年1月27日) 链接:https://leetcode.com/contest/weekly-contest-121 总结:2019年2月22日 ...
- 【Leetcode周赛】从contest-41开始。(一般是10个contest写一篇文章)
Contest 41 ()(题号) Contest 42 ()(题号) Contest 43 ()(题号) Contest 44 (2018年12月6日,周四上午)(题号653—656) 链接:htt ...
- 【Leetcode周赛】从contest-51开始。(一般是10个contest写一篇文章)
Contest 51 (2018年11月22日,周四早上)(题号681-684) 链接:https://leetcode.com/contest/leetcode-weekly-contest-51 ...
- LeetCode 31:递归、回溯、八皇后、全排列一篇文章全讲清楚
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天我们讲的是LeetCode的31题,这是一道非常经典的问题,经常会在面试当中遇到.在今天的文章当中除了关于题目的分析和解答之外,我们还会 ...
随机推荐
- 【面试题】JavaScript
第一题 合并 const a = { name: "zhangsan", age: 22 } const b = { name: "lisi", age: 55 ...
- Docker Toolbox 学习教程【转载】
最近在研究虚拟化,容器和大数据,所以从Docker入手,下面介绍一下在Windows下怎么玩转Docker.Docker本身在Windows下有两个软件,一个就是Docker,另一个是Docker T ...
- php array_intersect()函数 语法
php array_intersect()函数 语法 作用:用于比较两个(或更多个)数组的键值,并返回交集.直线电机生产厂家 语法:array_intersect(array1,array2,arra ...
- [CF959C]Mahmoud and Ehab and the wrong algorithm
解法 很简单对于n<=5举不出反例 如果n>5的话2,3,4好点连1,其他点连2 对于正面例子 直接所有点连1号点 其实就是结论题 代码: #include <cstdio> ...
- js中元素更新value页面体现不出来的原因
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- CF889 E Mod Mod Mod——DP
题目:http://codeforces.com/contest/889/problem/E 这题真好玩. 官方题解说得很好. 想到相邻 a[ i ] 之间的段可能可以一起维护,但是不太会. 原来是表 ...
- [hadoop](3) MapReduce:创建计数器、任务状态和写入日志
前言 本章主要讲述了如何在mapreduce任务中添加自定义的计数器,从所有任务中聚合信息,并且最终输出到mapreduce web ui中得到统计信息. 准备工作 数据集:ufo-60000条记录, ...
- P2672推销员
传送 很抱歉之前用错误的思路写了一篇题解ρωρ 先说一下之前的思路. 对于每个住户,求出它的s[i]*2+a[i],寻找最大的住户m,然后按照a排序,如果m在前x大的住户里面,就选择前x大的住户,从中 ...
- JSONP的产生,和ajax的异同!
先说说JSONP是怎么产生的: 其实网上关于JSONP的讲解有很多,但却千篇一律,而且云里雾里,对于很多刚接触的人来讲理解起来有些困难,着用自己的方式来阐释一下这个问题,看看是否有帮助. 1.一个众所 ...
- Redis 基础及各数据类型对应的命令
Redis 命令文档 基本概念 安装及使用 可以在官网下载源码编译安装.对于 CentOS,还可以通过 yum install redis 安装. Redis 安装完成后,通过 redis-serve ...