LeetCode
文章平均质量分 51
NJU_ChopinXBP
矜持放荡,明媚忧伤,技术不宅,文艺俗咖
展开
-
LeetCode(459):重复的子字符串 Repeated Substring Pattern(Java)
2021.1.22 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel如果s中包含重复的子字符串,那么说明s中至少包含两个子字符串,s+s至少包含4个字串,前后各去掉一位,查找s是否在新构建的字符串中。传送门:重复的子字符串Given a non-empty string check if it can be constructed by taking a substring of it and原创 2021-01-22 12:40:52 · 500 阅读 · 1 评论 -
LeetCode(402):移掉K位数字 Remove K Digits(Java)
2021.1.21 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel最小递增栈,每次替换栈顶比当前元素大的元素,直至k次。若替换完成之后k>0,从尾部移除。传送门:移掉K位数字Given a non-negative integer num represented as a string, remove k digits from the number so that the new nu原创 2021-01-21 10:32:49 · 497 阅读 · 3 评论 -
LeetCode(453):最小移动次数使数组元素相等 Minimum Moves to Equal Array Elements(Java)
2021.1.18 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel1.先对数组排序2.排序后,第1次更新除最大值nums[len-1]外的其余值,更新nums[i]-nums[0]次,使得nums[0]=nums[len-1]同为最小值3.而nums[len-2]为新的最大值,第二次更新nums[len-2]-nums[0]次,使得nums[0]=nums[len-1]=nums[len-2]同原创 2021-01-18 13:46:12 · 381 阅读 · 1 评论 -
LeetCode(1361):验证二叉树 Validate Binary Tree Nodes(Java)
2021.1.17 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel直接的思路是借助哈希表+DFS验证二叉树的正确性。1.同一结点不能有两个父节点2.有且仅有一个根节点3.结点中不存在环高级的一点的方法可以借助图论:叶子结点个数 = 非叶子结点个数 + 1将所有-1看成叶子结点,也即:num(-1) = n + 1传送门:验证二叉树You have n binary tree原创 2021-01-17 11:27:03 · 254 阅读 · 0 评论 -
LeetCode(1360):日期之间隔几天 Number of Days Between Two Dates(Java)
2021.1.16 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel如果能依靠库函数Date和SimpleDateFormat可以很快解决问题。在不能依赖库函数的情况下,直接让两个日期做差需要考虑的因素太多。需要换个思路,分别求出两个日期距离1970年1月1日的天数,再将两个天数做差即可。传送门:日期之间隔几天Write a program to count the number of day原创 2021-01-16 13:01:58 · 272 阅读 · 0 评论 -
LeetCode(401):二进制手表 Binary Watch(Java)
2021.1.11 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel可以有两种思路:1.遍历所有符合要求的时间,统计二进制中1的个数,把个数等于num的时间筛选出来。2.回溯法遍历所有LED,记录符合条件的时间。传送门:二进制手表A binary watch has 4 LEDs on the top which represent the hours (0-11), and the 6 L原创 2021-01-11 08:39:11 · 207 阅读 · 0 评论 -
LeetCode(1319):连通网络的操作次数 Number of Operations to Make Network Connected(Java)
2021.1.8 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel这是一道经典的并查集问题。关键点在于:每一个多余的连通集都需要一次操作进行消除,每一次操作需要一条多余的边。因此,可以先建立一个并查集,初始连通集个数为n。根据给定的connection来合并连通集,每一次失败的合并意味着有一条多余的边。计算多余的连通集个数result。如果result=0,说明已经全连通,直接返回0;如果l原创 2021-01-08 09:42:37 · 206 阅读 · 1 评论 -
LeetCode(342):4的幂 Power of Four(Java)
2021.1.6 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel不能用循环或者递归,意味着就得依靠奇技淫巧了。位运算方法11.该数是2的幂(仅有一位为1),用n&(n-1)可以验证(去掉最右边的1)2.这个1出现在奇数位上,用0x[5] = 0b[0101]可以验证位运算方法21.该数是2的幂(仅有一位为1),用n&(n-1)可以验证(去掉最右边的1)2.保证上一条的前提原创 2021-01-06 16:54:18 · 116 阅读 · 0 评论 -
LeetCode(1297):子串的最大出现次数 Maximum Number of Occurrences of a Substring(Java)
2021.1.4 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel利用滑动窗口的思路可以做,但是本题有一个思维技巧在于:只需要创建minSize的滑动窗口即可,如果长度为maxSize的子串出现了N次,那么长度为minSize的子串也会出现N次。而题目只要求最大数量的子串即可,没有长度要求。传送门:子串的最大出现次数Given a string s, return the maximum num原创 2021-01-04 11:13:26 · 289 阅读 · 0 评论 -
LeetCode(1296):划分数组为连续数字的集合 Divide Array in Sets of K Consecutive Numbers(Java)
2021.1.2 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel可以用TreeMap对数组中的元素进行排序并对个数进行记录,再依次检查。传送门:划分数组为连续数字的集合Given an array of integers nums and a positive integer k, find whether it’s possible to divide this array into set原创 2021-01-02 15:24:36 · 233 阅读 · 0 评论 -
LeetCode(601):体育馆的人流量 Human Traffic of Stadium(SQL)
2021.1.1 第一天,元旦快乐LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel括号题一般可以考虑用递归/回溯、栈等等,子串问题一般可以考虑用动态规划、滑动窗口等等。这道题结果要求输出多种组合,一般也就考虑用递归/回溯或者动态规划了。这道题的回溯思想如下:1.先计算不匹配的左右括号数leftError、rightError。2.开始递归回溯,返回条件是判断当前递归位置idx是否到达尾部,如果此时原创 2021-01-01 16:43:27 · 1202 阅读 · 1 评论 -
LeetCode(263 & 264):丑数 I II Ugly Number I II(Java)
2020.12.30 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel丑数I只需要验证是否为丑数即可,直接将其除净即可。丑数II要求返回指定顺位的丑数,可以采用归并的思想。用三指针指向下一个需要乘n(n=2/3/5)进行拓展的数字,相当于做一个三路归并。找出三个指针的最小元素,将指针后移。如果有多组指针的当前值都是min,指针都需要后移,保证 ugly 数组中不会加入重复元素。传送门:丑数W原创 2020-12-30 17:48:35 · 139 阅读 · 0 评论 -
LeetCode(262):行程和用户 Trips and Users(SQL)
2020.12.29 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel传送门:行程和用户Trips 表中存所有出租车的行程信息。每段行程有唯一键 Id,Client_Id 和 Driver_Id 是 Users 表中 Users_Id 的外键。Status 是枚举类型,枚举成员为 (‘completed’, ‘cancelled_by_driver’, ‘cancelled_by_client’)。原创 2020-12-29 17:41:31 · 188 阅读 · 0 评论 -
LeetCode(258):各位相加 Add Digits(Java)
2020.12.27 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel智力题规律很简单:数字为0时,结果为0;数字为9的倍数时,结果为9;其他情况下为除以9的余数。假设输入的数字是一个5位数字num,则num的各位分别为a、b、c、d、e。有如下关系:num = a * 10000 + b * 1000 + c * 100 + d * 10 + e即:num = (a + b + c + d原创 2020-12-27 20:49:53 · 157 阅读 · 0 评论 -
LeetCode(1292):元素和小于等于阈值的正方形的最大边长 Maximum Side Length of a Square(Java)
2020.12.24 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel原地动态规划 + 前缀和。遍历每一个位置ij时,将该位的数值置为从该位起左边的1的总个数,例如对于矩阵 [1,1,3,2], [1,1,4,3], [1,2,4,2]遍历结束后效果为: [1,2,5,7], [1,2,6,9], [1,3,7,9]为了统计正方形矩阵的面积,可以假定当前位置ij为正方原创 2020-12-24 16:12:52 · 192 阅读 · 1 评论 -
LeetCode(185):部门工资前三高的所有员工 Department Top Three Salaries(SQL)
2020.12.23 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel传送门:部门工资前三高的所有员工Employee 表包含所有员工信息,每个员工有其对应的工号 Id,姓名 Name,工资 Salary 和部门编号 DepartmentId 。+----+-------+--------+--------------+| Id | Name | Salary | DepartmentId |原创 2020-12-23 19:32:37 · 232 阅读 · 0 评论 -
LeetCode(168):Excel表列名称 Excel Sheet Column Title(Java)
2020.12.21 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel这题实质上是移位进制转换问题。xi*26^(i-1) + … + x3*26^2 + x2*26^1 + x1*26^0 = n每次num=n%26可以取出最低位的xi=num,n/=26可以去掉最低位的xi.但题目每个位的范围是1-26,而不是0-25。因此当num==26时需要进行修正,将n-1是使n不满足26的倍数,再原创 2020-12-21 16:17:20 · 179 阅读 · 0 评论 -
LeetCode(626):换座位 Exchange Seats(SQL)
2020.12.20 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel传送门:换座位小美是一所中学的信息科技老师,她有一张 seat 座位表,平时用来储存学生名字和与他们相对应的座位 id。其中纵列的 id 是连续递增的小美想改变相邻俩学生的座位。你能不能帮她写一个 SQL query 来输出小美想要的结果呢?示例:+---------+---------+| id | stu原创 2020-12-20 19:40:56 · 191 阅读 · 0 评论 -
LeetCode(1226):哲学家进餐 The Dining Philosophers(JUC)
2020.12.19 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel传送门:哲学家进餐Five silent philosophers sit at a round table with bowls of spaghetti. Forks are placed between each pair of adjacent philosophers.Each philosopher must alt原创 2020-12-19 20:35:46 · 477 阅读 · 1 评论 -
LeetCode(184):部门工资最高的员工 Reformat Department Table(SQL)
2020.7.8 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel传送门:部门工资最高的员工Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id。+----+-------+--------+--------------+| Id | Name | Salary | DepartmentId |+----+-------+------原创 2020-07-08 20:34:47 · 227 阅读 · 0 评论 -
LeetCode(1195):交替打印字符串 Fizz Buzz Multithreaded(JUC)
2020.7.7 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel传送门:交替打印字符串Write a program that outputs the string representation of numbers from 1 to n, however:If the number is divisible by 3, output “fizz”.If the number is divi原创 2020-07-07 14:10:25 · 350 阅读 · 1 评论 -
LeetCode(180):连续出现的数字 Consecutive Numbers(SQL)
2020.4.9 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel传送门:连续出现的数字编写一个 SQL 查询,查找所有至少连续出现三次的数字。+----+-----+| Id | Num |+----+-----+| 1 | 1 || 2 | 1 || 3 | ...原创 2020-04-09 16:13:44 · 244 阅读 · 0 评论 -
LeetCode(178):分数排名 Rank Scores(SQL)
2020.2.23 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel传送门:分数排名编写一个 SQL 查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。+----+-------+...原创 2020-02-23 15:24:49 · 372 阅读 · 0 评论 -
LeetCode(432):全 O(1) 的数据结构 All O`one Data Structure(Java)
2020.2.22 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel这道题要求在常数的复杂度内对这个数据结构进行查找、增删、获取最值操作。而且相同count值还可能会同时存在多个key,因此需要结合多种数据结构进行。依靠一个HashMap、一个排序双向链表DoubleLinkedList,...原创 2020-02-22 15:42:12 · 454 阅读 · 0 评论 -
LeetCode(1117):H2O 生成 Building H2O(JUC)
2020.1.30 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel传送门:H2O 生成There are two kinds of threads, oxygen and hydrogen. Your goal is to group these threads to form wate...原创 2020-01-30 17:50:25 · 409 阅读 · 0 评论 -
LeetCode(177):第N高的薪水 Reformat Department Table(SQL)
2020.1.12 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel传送门:重新格式化部门表编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水(Salary)。+----+--------+| Id | Salary |+----+--------+| 1 | ...原创 2020-01-12 13:36:02 · 1432 阅读 · 0 评论 -
LeetCode(354):俄罗斯套娃信封问题 Russian Doll Envelopes(Java)
2020.1.10 . LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel这道题是之前 LeetCode(300):最长上升子序列 Longest Increasing Subsequence(Java) 的拓展问题。对所有信封排序之后,原题相当于是二维的最长上升子序列。思路主要有动态规划和动...原创 2020-01-10 22:07:46 · 475 阅读 · 0 评论 -
LeetCode(1277):统计全为 1 的正方形子矩阵 Count Square Submatrices with All Ones(Java)
2019.12.29 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel原地动态规划。遍历每一个位置ij时,将该位的数值置为从该位起左边的1的总个数,例如对于矩阵 [0,1,1,1], [1,1,1,1], [0,1,1,1]遍历结束后效果为: [0,1,2,3], ...原创 2019-12-29 12:34:41 · 685 阅读 · 0 评论 -
LeetCode(1179):重新格式化部门表 Reformat Department Table(SQL)
2019.12.27 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel传送门:重新格式化部门表部门表 Department:+---------------+---------+| Column Name | Type |+---------------+---------...原创 2019-12-27 21:51:15 · 631 阅读 · 0 评论 -
LeetCode(120):三角形最小路径和 Triangle(Java)
2019.12.22 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel自底向上的动态规划。建立dp数组,dp[j]代表当前层j位置的最小路径和,对于每一层i,自底向上有动态转移方程:dp[j] = triangle.get(i - 1).get(j) + Math.min(dp[j], d...原创 2019-12-22 15:16:11 · 269 阅读 · 0 评论 -
LeetCode(627):交换工资 Swap Salary(SQL)
2019.12.21 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel传送门:交换工资给定一个 salary 表,如下所示,有 m = 男性 和 f = 女性 的值。交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。要求只使用一个更新(Update)语句,并且没有中间...原创 2019-12-21 18:05:01 · 198 阅读 · 0 评论 -
LeetCode(60):第k个排列 Permutation Sequence(Java)
2019.12.19 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel之前有做过两道排列相关的题目:LeetCode(46):全排列 Permutations(Java)LeetCode(31):下一个排列 Next Permutation(Java)但是,单纯依靠之前的全排列方法做出...原创 2019-12-19 09:47:00 · 286 阅读 · 0 评论 -
LeetCode(1114):按序打印 Print in Order(JUC)
2019.12.17 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel传送门:按序打印Suppose we have a class:public class Foo { public void first() { print("first"); } public void se...原创 2019-12-17 19:55:44 · 272 阅读 · 0 评论 -
LeetCode(197):上升的温度 Rising Temperature(SQL)
2019.12.15 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel传送门:上升的温度给定一个 Weather 表,编写一个 SQL 查询,来查找与之前(昨天的)日期相比温度更高的所有日期的 Id。+---------+------------------+--------------...原创 2019-12-15 12:32:21 · 419 阅读 · 0 评论 -
LeetCode(196):删除重复的电子邮箱 Delete Duplicate Emails(SQL)
2019.12.11 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel传送门:删除重复的电子邮箱编写一个 SQL 查询,来删除 Person 表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。+----+------------------+| Id | Email ...原创 2019-12-11 13:54:01 · 288 阅读 · 0 评论 -
LeetCode(183):从不订购的客户 Customers Who Never Order(SQL)
2019.12.10 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel传送门:从不订购的客户某网站包含两个表,Customers 表和 Orders 表。编写一个 SQL 查询,找出所有从不订购任何东西的客户。Customers 表:+----+-------+| Id | Name...原创 2019-12-10 14:15:18 · 152 阅读 · 0 评论 -
LeetCode(1268):搜索推荐系统 Search Suggestions System(Java)
2019.12.9 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel这是参加的第二场周赛。本题很直接可以想到前缀树+DFS的思路,不过要注意一点神坑:测试用例的字典中可能包含重复的单词。应对这点,只需要在字典树结点中加上条件count用于统计相同单词的出现次数即可。也可以不直接建树,先将...原创 2019-12-09 20:35:19 · 819 阅读 · 0 评论 -
LeetCode(182):查找重复的电子邮箱 Duplicate Emails(SQL)
2019.12.8 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel传送门:查找重复的电子邮箱编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。示例:+----+---------+| Id | Email |+----+---------+| 1 | a...原创 2019-12-08 12:03:48 · 238 阅读 · 0 评论 -
LeetCode(93):复原IP地址 Restore IP Addresses(Java)
2019.12.6 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel递归方法在本题上比较高效,也很容易想到。还可以依靠动态规划的思路。建立dp数组,dp[i]代表截至第i位字符串能够组成的地址集合。对于第i位上的地址集合,可以遍历前三位j,状态转移方程为:dp[i] += dp[j] +...原创 2019-12-06 20:18:25 · 219 阅读 · 0 评论 -
LeetCode(176):第二高的薪水 Second Highest Salary(SQL)
2019.12.3 LeetCode 从零单刷个人笔记整理(持续更新)github:https://github.com/ChopinXBP/LeetCode-Babel传送门:第二高的薪水编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。+----+--------+| Id | Salary |+----+--------+| 1 | 100...原创 2019-12-03 19:59:03 · 175 阅读 · 0 评论