【LeetCode Weekly Contest 29】【2017/04/23】 第17周

  1. Binary Tree Tilt (3)
  2. Array Partition I (6)
  3. Longest Line of Consecutive One in Matrix (8)
  4. 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写一篇文章)的更多相关文章

  1. 【Leetcode周赛】从contest-91开始。(一般是10个contest写一篇文章)

    Contest 91 (2018年10月24日,周三) 链接:https://leetcode.com/contest/weekly-contest-91/ 模拟比赛情况记录:第一题柠檬摊的那题6分钟 ...

  2. 【Leetcode周赛】从contest1开始。(一般是10个contest写一篇文章)

    注意,以前的比赛我是自己开了 virtual contest.这个阶段的目标是加快手速,思考问题的能力和 bug-free 的能力. 前面已经有了100个contest.计划是每周做三个到五个cont ...

  3. 【Leetcode周赛】从contest-81开始。(一般是10个contest写一篇文章)

    Contest 81 (2018年11月8日,周四,凌晨) 链接:https://leetcode.com/contest/weekly-contest-81 比赛情况记录:结果:3/4, ranki ...

  4. 【Leetcode周赛】从contest-71开始。(一般是10个contest写一篇文章)

    Contest 71 () Contest 72 () Contest 73 (2019年1月30日模拟) 链接:https://leetcode.com/contest/weekly-contest ...

  5. 【Leetcode周赛】从contest-111开始。(一般是10个contest写一篇文章)

    Contest 111 (题号941-944)(2019年1月19日,补充题解,主要是943题) 链接:https://leetcode.com/contest/weekly-contest-111 ...

  6. 【Leetcode周赛】从contest-121开始。(一般是10个contest写一篇文章)

    Contest 121 (题号981-984)(2019年1月27日) 链接:https://leetcode.com/contest/weekly-contest-121 总结:2019年2月22日 ...

  7. 【Leetcode周赛】从contest-41开始。(一般是10个contest写一篇文章)

    Contest 41 ()(题号) Contest 42 ()(题号) Contest 43 ()(题号) Contest 44 (2018年12月6日,周四上午)(题号653—656) 链接:htt ...

  8. 【Leetcode周赛】从contest-51开始。(一般是10个contest写一篇文章)

    Contest 51 (2018年11月22日,周四早上)(题号681-684) 链接:https://leetcode.com/contest/leetcode-weekly-contest-51 ...

  9. LeetCode 31:递归、回溯、八皇后、全排列一篇文章全讲清楚

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天我们讲的是LeetCode的31题,这是一道非常经典的问题,经常会在面试当中遇到.在今天的文章当中除了关于题目的分析和解答之外,我们还会 ...

随机推荐

  1. CentOS下安装Chrome浏览器

    1. 下载安装脚本, 在下载目录中,执行以下命令,将安装脚本下载到本地 wget https://intoli.com/install-google-chrome.sh 2.然后授予可执行权限 chm ...

  2. dubbo-go 中的 TPS Limit 设计与实现

    前言 Apache Dubbo 是由阿里开源的一个RPC框架,除了基本的 RPC 功能以外,还提供了一整套的服务治理相关功能.目前它已经是 Apache 基金会下的顶级项目. 而 dubbo-go 则 ...

  3. [APIO2013]道路费用

    题目描述 幸福国度可以用 N 个城镇(用 1 到 N 编号)构成的集合来描述,这些城镇 最开始由 M 条双向道路(用 1 到 M 编号)连接.城镇 1 是中央城镇.保证一个 人从城镇 1 出发,经过这 ...

  4. python&数据分析&数据挖掘--参考资料推荐书籍

    1.要用python做数据分析,先得对python语言熟悉,推荐一本入门书 :笨方法学python (learn python the hard way),这本书用非常有趣的讲述方式介绍了python ...

  5. 在服务器上给tomcat指定jdk版本

    export JAVA_HOME=/usr/local/jdk1.8 --路径是:Jdk8所在的目录 export CATALINA_OPTS="-Djava.awt.headless=tr ...

  6. 解决IDEA输入法输入中文候选框不显示问题

    本机环境为: 系统: win7        jdk版本:jdk1.8.0_65      idea版本:2017.2.3 解决方法:关掉idea,进入idea的安装目录找到jre64文件夹重命名为j ...

  7. 软件-Jenkins:Jenkins 百科

    ylbtech-软件-Jenkins:Jenkins 百科 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续 ...

  8. Linux 两台服务器之间传递文件

    参考: https://www.cnblogs.com/clovershell/p/9870603.html linux采用scp命令拷贝文件到本地,拷贝本地文件到远程服务器   // 假设远程服务器 ...

  9. tools-eclipse-003-下载安装优化

    一.下载 1.1.jdk安装 下载:http://www.oracle.com/technetwork/java/javase/downloads/index.html 安装:不需要安装jre,默认会 ...

  10. Linux_Bash脚本基础

    目录 目录 Bash使用基础 if 语句 运算符 逻辑表达式 不将执行指令的结果显示出来 echo 语句 从Bash接受输入参数 Case语句 循环 for 语句 While语句 内置变量和函数 AW ...