力扣199周周赛题解(下)

题目三:好叶子节点对的数量

  1. 给你二叉树的根节点 root 和一个整数 distance
  2. 如果二叉树中两个叶节点之间的 最短路径长度 小于或者等于 distance ,那它们就可以构成一组 好叶子节点对 。
  3. 返回树中 好叶子节点对 的数量 。

示例

解题思路

遍历获取每个节点到其下方所有叶子节点的距离记录为list,left为左子树的list,right为右子树中离叶子节点的list值,找到左右距离之和小于distance的即为满足条件的,返回即可。

代码实现

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {private int ans=0;public int countPairs(TreeNode root, int distance) {dfs(root,distance);return ans;}private List<Integer> dfs(TreeNode root,int distance) {// 特殊情况处理if (root == null) {return new ArrayList();}    if(root.left==null&&root.right==null){return new ArrayList().add(0);}// 初始化结果listList<Integer> list=new ArrayList();// 分别记录当前节点下其左右子树下的叶子节点到当前节点的长度,存入left和right两个listList<Integer> left=dfs(root.left,distance);for(int it:left){if (it + 1  <= distance) {list.add(it+1);} }List<Integer> right = dfs (root.right,distance);for (int it:right) {if (it + 1  <= distance) {list.add(it+1);} }for(int l:left){for(int r:right){if(l+r+1 < distance)ans++;}}// 返回return list;}
}

题目四: 压缩字符串 II

行程长度编码 是一种常用的字符串压缩方法,它将连续的相同字符(重复 2 次或更多次)替换为字符和表示字符计数的数字(行程长度)。例如,用此方法压缩字符串 “aabccc” ,将 “aa” 替换为 “a2” ,“ccc” 替换为` “c3” 。因此压缩后的字符串变为 “a2bc3” 。

注意,本问题中,压缩时没有在单个字符后附加计数 ‘1’ 。

给你一个字符串 s 和一个整数 k 。你需要从字符串 s 中删除最多 k 个字符,以使 s 的行程长度编码长度最小。

请你返回删除最多 k 个字符后,s 行程长度编码的最小长度 。

代码实现

代码转自@kwantong大佬,时间有限,我未能理解到位,明天再补上马后炮解题思路

class Solution {public int getLengthOfOptimalCompression(String s, int k) {int n = s.length();int[][] dp = new int[n + 1][k + 1];// dp[i][j]: 前i个数,删减j次,最短长度for (int i = 0; i < n + 1; i++) {Arrays.fill(dp[i], n);}dp[0][0] = 0;for (int i = 1; i <= n; i++) {for (int j = 0; j <= k; j++) {int same = 0;int delete = 0;// 情况一,保留s[i-1],同时删掉s[0...i-1]跟s[i-1]不同的for (int l = i; l >= 1; l--) {if (s.charAt(l - 1) == s.charAt(i - 1)) {same++;} else {delete++;}if (j - delete >= 0) {// 够余额去删,长度为:s[0...l-2]最好的结果,并上s[l-1...i]中same个s[i-1]dp[i][j] = Math.min(dp[i][j], dp[l - 1][j - delete] + getDigits(same) + 1);}}// 情况二,删掉s[i-1]if (j >= 1) {dp[i][j] = Math.min(dp[i][j], dp[i-1][j-1]);}}}return dp[n][k];}private int getDigits(int n) {if (n == 1) {return 0;}if (n > 1 && n < 10) {return 1;}if (n >= 10 && n < 100) {return 2;}return 3;}
}

20200729:力扣199周周赛题解(下)相关推荐

  1. (补)20200911:力扣204周周赛题解下

    力扣204周周赛题解下 题目 思路与算法 代码实现 写在最后 题目 3.1568. 使陆地分离的最少天数 思路与算法 本周周赛第三题勉强可以看看,第四题超出我目前的水平,跳过.第三题是一个典型的dfs ...

  2. 20200728:力扣199周周赛题解(上)

    199周周赛题解 题目一:重新排列字符串 给你一个字符串s和一个长度相同的整数数组indices. 请你重新排列字符串s,其中第i个字符需要移动到indices[i]指示的位置. 返回重新排列后的字符 ...

  3. 20201008:力扣209周周赛题解(下)

    力扣209周周赛题解(下) 题目 思路与算法 代码实现 写在最后 题目 可见点的最大数目 使整数变为 0 的最少操作次数 思路与算法 第一题注意添加角度时atan2的范围是正负π,因此注意差值可能超出 ...

  4. 20200815:力扣201周周赛题解记录下

    力扣201周周赛题解记录下 题目 思路与算法 代码实现 题目 和为目标值的最大数目不重叠非空子数组数目 1547. 切棍子的最小成本 在这里插入图片描述 思路与算法 第3题还是一个简单的模拟,用set ...

  5. 20200819:力扣202周周赛题解记录

    力扣202周周赛题解记录 题目一:[存在连续三个奇数的数组](https://leetcode-cn.com/problems/three-consecutive-odds/) 代码实现 题目二:[使 ...

  6. 20201219:力扣219周周赛题解

    力扣219周周赛题解 题目 思路与算法 代码实现 复杂度分析 题目 比赛中的配对次数 十-二进制数的最少数目 石子游戏 VII 堆叠长方体的最大高度 思路与算法 比赛中的配对次数 两两比赛,淘汰剩一支 ...

  7. 20201007:力扣209周周赛题解记录(上)

    力扣209周周赛题解记录(上) 题目 思路与算法 代码实现 复杂度分析 题目 特殊数组的特征值 奇偶树 思路与算法 第一题单纯的暴力就行,应该是可以用二分之类的改善复杂度,没必要赘述,直接上暴力遍历, ...

  8. 20200910:力扣204周周赛题解上(Java/Python/Cpp)

    力扣204周周赛题解上 题目 思路与算法 代码实现 写在最后 题目 1.1566. 重复至少 K 次且长度为 M 的模式 2.1567. 乘积为正数的最长子数组长度 思路与算法 热身题不要求算法技巧, ...

  9. 20200907:力扣203周周赛题解记录

    力扣203周周赛题解 题目一: 1.圆形赛道上经过次数最多的扇区 示例 解题思路与代码实现 本题的思路为优化整个起点与终点,理清关系,起点到终点的过程中,分为起点小于终点,起点大于终点,起点等于终点, ...

最新文章

  1. c mysql 索引_MySQL 多列索引的生效规则
  2. spark安装测试过程中提示console:10: error: not found: value sc
  3. C# 外接(网口)双摄像头视频获取
  4. 【转】WPF Expander 收缩不占空间的用法
  5. 高斯拟合 vc++代码_NMA2020W1 极大似然法模型拟合与bootstrap
  6. 华为管理学案例分析_管理学论文5000字如何高质量写作
  7. 算法:求两个数最大公约数
  8. [Ext JS 4] 实战之多选下拉单 (带checkbox)
  9. Hamilton四元数
  10. [已解决] org.hibernate.HibernateException:未配置CurrentSessionContext
  11. ug如何复制面_学习UG,要从最基础的做起,初学者必备40条技巧
  12. laravel文档——文件夹结构
  13. min-height是什么意思?
  14. Spring(11) - Introductions进行类扩展方法
  15. 收银设备对接php,快速对接payjs的个人支付接口(收银台模式)
  16. 史上最全的15个苹果手机输入法使用技巧,不看后悔三年
  17. 2014年传智Itcast C++培训3期视频全套
  18. 服务器系统会提示有神兽刷新吗,我的世界神奇宝贝服务器里刷新神兽提示是那些...
  19. 电大大学英语B 计算机应用基础,电大大学英语B统考 网考计算机应用基础统考.doc...
  20. python 爬虫 爬取肯德基门店信息

热门文章

  1. JavaScript 败北,TypeScript 大势所趋?
  2. 云原生与数据中台,企业数字化转型的“正确打开方式”
  3. Google 最强开源模型 BERT 在 NLP 中的应用 | 技术头条
  4. 在 Libra 刷屏的背后,你必须知道 TA!
  5. 李彦宏候选工程院院士;陌陌回应探探下架;拼多多回应“刷单”质疑 | 极客头条...
  6. 遇冷的斗鱼直播,还“斗”得动吗?| 畅言
  7. IoT、3D 扫描抢救巴黎圣母院!
  8. PDF 翻译神器,再也不担心读不懂英文 Paper 了 | 开发攻略
  9. 你真的知道如何在 GitHub 上高效搜索开源项目吗?
  10. “写代码三年月薪不到一万是不是很失败?”