LeetCode 第 159 场周赛
一、 缀点成线(LeetCode-5230)
1.1 题目描述
1.2 解题思路
比较简单的一题,利用公式 y = kx + b,确定好k和b就好,并且要考虑一种情况,函数 x = h。
1.3 解题代码
public boolean checkStraightLine(int[][] coordinates) {
int k = Integer.MIN_VALUE;
int x1 = coordinates[0][0];
int y1 = coordinates[0][1];
int x2 = coordinates[1][0];
int y2 = coordinates[1][1];
int dy = y2 - y1;
int dx = x2 - x1;
if (dx != 0) {
k = dy / dx;
}
int b = y1 - k * x1;
boolean onLine = true;
for (int i = 2; i < coordinates.length; i++) {
if (k == Integer.MIN_VALUE) {
if (coordinates[i][0] != x1) {
onLine = false;
break;
}
} else if (coordinates[i][1] != (k * (coordinates[i][0]) + b)) {
onLine = false;
break;
}
}
return onLine;
}
二、 删除子文件夹(LeetCode-5231)
2.1 题目描述
2.2 解题思路
使用两层for循环会导致超时,需要使用字典树解决。
2.3 解题代码
class Solution {
public Tree rootNode = null;
public List<String> removeSubfolders(String[] folder) {
rootNode = new Tree();
rootNode.path = "/";
rootNode.nextMap = new HashMap<>();
List<String> res = new ArrayList<>();
Arrays.sort(folder, (a, b) -> {
return a.length() - b.length();
});
for (int i = 0; i < folder.length; i++) {
if (!isCover(folder[i])) {
res.add(folder[i]);
}
}
return res;
}
public boolean isCover(String path) {
boolean cover = false;
String[] pathArray = path.split("/");
int arrayLen = pathArray.length;
Tree tmp = rootNode;
for (int i = 1; i < arrayLen; i++) {
Tree node = tmp.nextMap.get(pathArray[i]);
if (node == null) {
node = new Tree();
node.path = pathArray[i];
node.nextMap = new HashMap<>();
} else {
if (node.isRoot) {
cover = true;
}
}
if (cover == false && i == arrayLen - 1) {
node.isRoot = true;
}
tmp.nextMap.put(pathArray[i], node);
tmp = node;
}
return cover;
}
}
class Tree {
public String path;
//判断是否是根文件夹
//例如 /a/b 可能是根文件夹,需要在b节点,记录isRoot = true;
public boolean isRoot;
public Map<String, Tree> nextMap;
}
LeetCode 第 159 场周赛的更多相关文章
- LeetCode 第 165 场周赛
LeetCode 第 165 场周赛 5275. 找出井字棋的获胜者 5276. 不浪费原料的汉堡制作方案 5277. 统计全为 1 的正方形子矩阵 5278. 分割回文串 III C 暴力做的,只能 ...
- Leetcode第 217 场周赛(思维量比较大)
Leetcode第 217 场周赛 比赛链接:点这里 做完前两题我就知道今天的竞赛我已经结束了 这场比赛思维量还是比较大的. 1673. 找出最具竞争力的子序列 题目 给你一个整数数组 nums 和一 ...
- Leetcode 第133场周赛解题报告
今天参加了leetcode的周赛,算法比赛,要求速度比较快.有思路就立马启动,不会纠结是否有更好的方法或代码可读性.只要在算法复杂度数量级内,基本上是怎么实现快速就怎么来了. 比赛时先看的第二题,一看 ...
- LeetCode第151场周赛(Java)
这是我第一次写周赛的题目,而且还是虚拟的.从这次起,以后就将所有错过的题目都写到博客来.当然既然是我错的,那代码肯定不是我自己的.我会注明来源.并且我会自己敲一遍.多总结总是没坏处的. 另外比较糟糕的 ...
- LeetCode第152场周赛(Java)
这算是我第一次正式参加 LeetCode 的周赛吧.通过两道题.意料之中(通过上次模拟可以看出来).总的来说,脑袋还是不太灵光.想的有点慢.全球第一名 0:10:19 就全部通过...感觉我的智商被狠 ...
- Leetcode 第137场周赛解题报告
今天的比赛的题目相对来说比较「直白」,不像前几周都是一些特定的算法,如果你没学过不可能想出来. 做了这些周,对leetcode比赛的题目也发现了一些「规律」. 一般前两道题都很「简单」,只要有想法,直 ...
- LeetCode 第 150 场周赛
一.拼写单词(LeetCode-1160) 1.1 题目描述 1.2 解题思路 由于给定的chars,每个字母只能用一次,所以用大小为26的数组charsArray来表示a-z(例如charsArra ...
- LeetCode 第 196 场周赛 (题目:5452-5455,这是参加过最坑的周赛,暴力n^2居然可以过)
5452. 判断能否形成等差数列 给你一个数字数组 arr . 如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就称为 等差数列 . 如果可以重新排列数组形成等差数列,请返回 tru ...
- Leetcode 第136场周赛解题报告
周日的比赛的时候正在外面办事,没有参加.赛后看了下题目,几道题除了表面要考的内容,还是有些能发散扩展的地方. 做题目不是最终目的,通过做题发现知识盲区,去研究学习,才能不断提高. 理论和实际是有关系的 ...
随机推荐
- Qt 添加程序图标和系统托盘图标
添加程序图标 第一种方法: 1.创建程序的时候,选择添加默认图标 2.替换程序目录下的ico文件,编译生成即可. 第二种方法: 比较适合一开始没有添加程序图标的情况 1.项目右键-->添加--& ...
- Vue项目中使用svg图标
svg的图片有着颜色自定义大小自定义的优势.在阿里图标库可以下载svg图片. 那么在vue框架中我们该怎么使用svg图片呢 这个时候就用到了 webpack 插件 svg-sprite-loader ...
- [AIR] NativeExtension在IOS下的开发实例 --- Flex库项目的创建(二)
来源:http://bbs.9ria.com/thread-102038-1-1.html 上一章,我已经介绍了如果创建IOS库文件,并定义了两个方法ShowIconBadageNumber和Init ...
- Mariadb 介绍 1 (安装)
引言: mariadb是是由开源社区维护,在这我会从安装到实战都会介绍到.后期所有用到mysql数据库的项目我会全用mariaDB来替换,实际使用中的区别我会标出,请大家注意 MariaDB: Mar ...
- Python七大原则,24种设计模式
七大设计原则:1.单一职责原则[SINGLE RESPONSIBILITY PRINCIPLE]:一个类负责一项职责.2.里氏替换原则[LISKOV SUBSTITUTION PRINCIPLE]:继 ...
- 【HICP Gauss】数据库 数据库管理(调优 启动流程)-4
数据库参数: 创建数据库 调优数据库 其他---->控制资源使用 控制数据库内部机制 设置重要属性 参数数据保存在cfg/Zengine.ini 文件中 参数保存使用 key=value的保存形 ...
- java 图片base64互转
public class ImgBase64 { public static void main(String[] args) //测试 { String strImg = GetImageStr() ...
- 软件测试_Loadrunner_性能测试_服务器资源监控
使用Loadrunner进行Windows服务器性能监控 将装有Loadrunner的机器叫做监控端,被监控资源的服务器叫做被监控端 一.前置环境设置 1. 设置被监控端管理员账户可用:我的电脑右键- ...
- Centos7.3云服务器上安装Nginx、MySQL、JDK、Tomcat环境
安装的软件路径建议放到/usr/local目录下 Tomcat 首先从最简单的Tomcat开始,进入到Apache的官网:http://www.apache.org,下载合适的版本来装,一般建议8.0 ...
- Linux postfix配置方法
第七题 配置邮件服务器 postfix学习网站:https://blog.csdn.net/mycms5/article/details/78773308 system1和systemc2分别执行 ...