自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(257)
  • 收藏
  • 关注

原创 JobHoppoer-314. Binary Tree Vertical Order Traversal

leetcode, tree vertical scan

2022-06-12 08:29:24 88

原创 JobHoppoer-SQL-570. Managers with at Least 5 Direct Reports

发现只是盲点对于 aggregated stats 的 过滤,不需要费劲的加一层 WHERE COUNT_Id > N,而是直接用 HAVING predicate总结: GROUP BY 之前用 WHERE; 之后用 HAVING,文章莫名其妙,我居然用了SUM(id),而不是 COUNT(id),debug了半天没看出来。# Write your MySQL query statement below# SELECT name FROM# (SELECT manager

2022-03-30 15:45:32 302

原创 JobHoppoer-SQL-550. Game Play Analysis IV

这题整了很久,找到了几个知识盲点,补一下:1. 怎么在SQL 语句中 取到 两个变量的值 并进行计算?这个题型没遇到过,有点生疏2. Join/LeftJoin 之后 两个表的 具体形状和内容,其实是没有 准确的概念,只有大概印象,关键还是错误印象。下方是 正确代码,不是自己写的。通过 SELECT * FROM 才看清楚了 Join/LeftJoin 之后表的样子。- LeftJoinJoin:这样就看得很清楚了,Join 是只取交集,也就是说Join 后的表...

2022-03-30 12:48:56 310

原创 JobHoppoer-SQL-181. Employees Earning More Than Their Managers

Easy question, solved in 5 mins.Only issue: did not rename the resule column as required in the question.SELECT E.name as 'Employee' FROM (Employee E JOIN Employee M ON E.managerId = M.id)WHERE E.salary > M.salary;

2022-03-26 13:00:58 350

原创 JobHoppoer-SQL-180. Consecutive Numbers

挺有意思的一道题,通过 某一 column 上下相邻 row 之间的关系,衍生出另一个行,所以要用到 UDF 类似的东西。思路跟 Rank 那题类似:JobHoppoer-SQL-178. Rank Scores_SpartanLaser的博客-CSDN博客考点:- 定义变量: 在 From 后进行 定义和初始化- SQL 中 条件语句的写法- 每经过一行就要对遍历 进行 更新,这里唯一需要 tracking的变量就是 previousNum.SQL 代码,我也是写了一会的,没有参考

2022-03-26 12:49:40 372

原创 JobHoppoer-SQL-178. Rank Scores

很有代表性的一道题类型:从已有的 columns 中 衍生出 新的 column;需要UDF;但是 计算的逻辑 不是简单 加减乘除,UDF 的设计需要一些 算法,有一点点 动态规划。考点:- 定义 变量- 定义lambda 函数- 复杂度的考察-- An intuitive way to get the Rank column. ORDER BY score, then go row by row to assign the value of Rank for each ro.

2022-03-26 02:44:29 866

原创 JobHoppoer-SQL-177. Nth Highest Salary

和上一题一样,是更加 general的情况。上一题:https://blog.csdn.net/laserljy123/article/details/123726837考察点:- LIMIT K, N == LIMIT N OFFSET K- ORDER BY _ DESC# Write your MySQL query statement below-- The below one does not give an empty list when there is 1 ro

2022-03-25 11:13:28 528

原创 JobHoppoer-SQL-176. Second Highest Salary

- 要求返回列表,所以最外层 又包了一层 SELECT- 得到第 n 行,关键词 LIMIT (n-1) OFFSET 1,或者简写成 LIMIT (n-1), 1;- SELECT DISTINCT 避免 duplicates.- ORDER BY col_name DESC 降序排列。# Write your MySQL query statement below-- The below one does not give an empty list when there is

2022-03-25 09:01:32 330

原创 JobHopper-MeetingRoomsI

简单版本的JobHopper-MinMeetingRooms_laserljy123的博客-CSDN博客同一个 model,问题稍微不同。如果一个人能都 attend,代表每个 interval 之间有 gap (或者相等),所以就 依次比较 相邻两个 interval 是否 cross。from typing import Listclass Solution: def canAttendMeetings(self, intervals: List[List[int]]

2022-03-07 14:24:47 112

原创 JobHopper-MinMeetingRooms

这道题看着简单,其实 抽象起来 很棘手。刚看到题时,在纸上画了画,理解的题意是,在任意时间点,找出占用资源数 最大的值。图形大概是:n 条 横线 (n intervals), 然后从左到右 用竖线 去扫,然后记录最大值。顺着这个思路想,非常难抽象。最后只能参考了别人答案。1. start, end 是interval 的两个属性interval 就是resource request eventstart 表示开始占用资源end 表示...

2022-03-07 13:55:46 355

原创 JobHopper-InsertDeleteGetRandomO(1)

这题 很基础 很好!就是考察 各种数据结构 常见几种操作的复杂度 区分。101的 课上那张 表格应该浮现在眼前,hhh这里说的 insert, delete 其实可以大致理解为 write, readwrite & read 存在天生的 trade-off,最快的 write 就是 append, 但是会导致 read, search 时 需要遍历,而search 又是 insert, delete, update 这些操作的 前奏。为了让read 更快,则需要在 write 时,.

2022-02-16 05:03:01 121

原创 JobHopper-MergeIntervals

很快解决的一道题。快速形成思路:merge 的条件很多,但是不merge其实是只有少数条件,所以从 少数条件 入手。然后 发现了一个edge case 难处理,就是这种情况[1, 5], [6, 10], [2, 8]前面两个不merge,但是第三个可以 "架桥" 把两者连接起来。为了处理这个情况,就是要先 sort list by the elem_left. 这样就简化了问题!除此之外,本题技术要点:1. list.sort(key=lambda x:x[0]).

2022-02-15 12:41:48 1096

原创 JobHopper-GroupAnagrams

5 mins 搞定但是一些 基本数据结构的 基本考察 还是需要经常练习1. strstr -> list of char: list(my_str)2.list functionsort in place: my_str.sort()3. str function and list functionconcatenate elem to a str: "".join(my_arr)4. map/dict function:check key in map.keys(

2022-02-13 09:40:50 221

原创 JobHopper-WordSearchI

和WordSearchII 思路和结构都很相似,唯一的就是 单个词搜索时就是 按 letter index 来搜(Trie的话就是 一层一层: next[index] == None ?)代码一次通过!自己的思路: 每次 index+1 来递归别人的思路:每次 word = word[1:], 掐掉首字母(index always be 0)代码如下:from typing import Listclass Solution(object): def exist(self

2022-02-12 03:01:43 57

原创 JobHopper-WordSearchII

找到了之前的Java 版本转化成python,LC提交后有一个例子超时未通过,但是在PyCharm里运行了,没有问题,答案正确。看了其他人提交的 python solution 都是类似的解法。high-level 理解:1. Trie 就是 为了多词搜索的高效DS,词的开始都是 root node,词的结尾 有endWork 做标记,从 root 到 标记的 path,就是一个单词2. 有了Trie, board 上就是 从每个 cell,每次一个cell 一个 char 的比较。Orde

2022-02-11 14:04:55 202

原创 JobHopper-TicTocToe

基础版本:class TicTacToe(object): def __init__(self, n): """ Initialize your data structure here. :type n: int """ self.board = [[0 for _ in range(n)] for _ in range(n)] self.n = n def move(self, row

2022-02-10 11:06:29 224

原创 [SqlLearn] 各种join

https://blog.csdn.net/qq_25135655/article/details/78238848https://blog.csdn.net/XiaoXiao_RenHe/article/details/78668544https://www.jianshu.com/p/800ec0326fda以下是自己的总结。1. Inner join is getting t...

2018-12-07 07:24:04 118

原创 [LearningScala] Iteration over a range

object IterOverRange{   def main(args: Array[String]) {      // Method1: define a function to retrieve a decreasing range, then iterate def dec(start: Int, end: Int) = {          start to en...

2018-12-07 03:30:04 137

原创 FTPrep, 130 Surrounded Regions

这道题还是蛮不错的,结合比较多的知识点,对我来说有几个新的点:1, BFS的iterative方法。把所有的可以延伸的点都收集到一个queue里,从尾巴上加,头部poll,这让我想到了UBER实习第一面时,面试官说我自己实现了queue的结构,我现在想想确实在treelevel traversal 的题型中,也可以用queue来traversal,只要在每一层里,先知道queuesize,然后

2017-10-09 04:23:53 414

原创 FTPrep, 129 Sum Root to Leaf Numbers

这道题还是比较顺手,基于之前对各种题型的分析。虽然没有给出具体的list in list 的输出类型,但是 这就是树形的pathSum一样的traversal过程。而且是无条件收集所有pathSum,对比两题的interface,看argumentlist的参数数量,就知道,这里的话因为是收集所有path所以少了一个 target sum的参数。但是套路都是一样的。每个path 的终结是左右子节点

2017-10-09 04:21:34 268

原创 FTPrep, 128 Longest Consecutive Sequence

思路很牛B!既然我们要得到最长的consecutive序列,那其实逆向思维,任何一个连续序列,只要选中了上面的一个点,一直往左还是往右延伸都可以得到这个序列的长度,所以可以随意选择。那么先构建一个set存放所有值,而且 即使不存放duplicate也不影响最后结果。最好要注意的是,set和 iterator的基本用法:Set.isEmpty() (这个和list.isEmpty() 一样啊

2017-10-09 04:20:07 349

原创 FTPrep, 127 Word Ladder, TODO,略难,没搞懂

思考一下再说。

2017-10-09 04:17:57 202

原创 FTPrep, 126 Word Ladder II, TODO,略难,没搞懂

还有后面紧跟的一道。留着以后做,TODO

2017-10-09 04:16:57 241

原创 FTPrep, 125 Valid Palindrome

主要是会用Character类里的一些方法:Character.isLetterOrDigit();Character.isLetter ();Character.isDigit();Character.toUpperCase();Character.toLowerCase();这个还蛮重要的。代码:class Solution { public boole

2017-10-09 04:15:38 229

原创 FTPrep, 124 Binary Tree Maximum Path Sum

这道题很有意思!原型就是 树形的 pathSum,从root 到leaf。这个变化的题型之前也想过的,就是,是否可以在任意节点结束,而不一定是leaf。这题就是说可以任意选取两个node作为起始。那么关键就是怎么在pathSum的原型上进行转化。思路:任意节点的角色有两个:1) 作为root,那么把它的左右子path的部分相加(条件是大于0),和自己本身value加在一起。这个数是要存到另

2017-10-09 04:14:58 222

原创 FTPrep, 123 Best Time to Buy and Sell Stock III, 没完全懂,TODO

这题不敢说完全懂了。只能看看别人的代码研究研究思路先贴在这里,todoclass Solution { public int maxProfit(int[] prices) { if(prices==null || prices.length==0) return 0; int[] local = new int[3]

2017-10-09 04:11:31 200

原创 FTPrep, 122 Best Time to Buy and Sell Stock II

思路和121 是一样的,这里的变化是可以多次交易。所以只要遇到比当前价格低的股价时,就立马交易,然后买入这个低股价,同时跟新low,high,当前次的profit这个也是优化过的结果,而不是用local + global哪种模版套用。但是在下一题模版会比较有用,因为很难优化,条件比较复杂,是动态的,比如说是K次。121-123这三道题连贯性不错,从个例出发,慢慢到generalized for

2017-10-09 03:54:52 195

原创 审查文章的 同学你好。有问题请帮忙。

审查文章的 同学你好~我也找不到其他方式联系你们,就写在这里吧,希望你看到,或者帮我转发给可以帮忙的管理员。我发现我每天写博客的数量上限是10篇,可不可以对我扩大这个数量啊,比如30篇。 我的博客都是解题方法,把答案写出来分享给也在做题的童鞋们。现在写得比较多,所以一天肯定超过10篇了,提出这个小小的要求,希望通过。谢谢啦!

2017-10-09 03:47:02 255

原创 FTPrep, 121 Best Time to Buy and Sell Stock

这道题,我想得比较细,也就是把优化的步骤都想好了。另外一些解法是套路模版,就是local 和 global两个变量来进行 不断交互比较。所以没有忽略一些可以忽略的情况。哪种模版的情况再处理复杂问题,即可以优化的情况不是很明显的题型时还是比较powerful的。和下一道题目对比的话,这里只限买卖一次,下一道是买卖多次,多次的话就是 逢低就卖,再一这个低价买入,交易就发生在低价出现之前。有了这个h

2017-10-08 04:26:51 195

原创 FTPrep: 120 Triangle,可以归为 pathSum 路径和的这类题,因为用到了list/array,就是一道DP题。

minPathSum represented in List 的题型,其实也是非常典型。从下往上,从后往前,从右到左。反向推导,其实非常make sense。细节看comment吧。代码:class Solution { public int minimumTotal(List> triangle) { int level=triangle.size(); // l

2017-10-08 04:21:54 198

原创 FTPrep, 119 Pascal's Triangle II

和118一样,只是输出不一样,过程也是类似的。注意comment中提到的细节。 118 和119 还是可以归到 level traversal一类的,和3道树的题目,2到populating pointer的题目,然后这里两道input是array的题目代码:class Solution { public List getRow(int rowIndex) {

2017-10-08 04:11:03 183

原创 FTPrep, 118 Pascal's Triangle

层序遍历的变体,根据上一层生成下一层,list in list题型。不多废话了,之间看代码吧:class Solution { public List> generate(int numRows) { List> result= new ArrayList>(); if(numRows==0) return result; for(int

2017-10-08 04:08:43 193

原创 FTPrep, 117 Populating Next Right Pointers in Each Node II,总结得很精准。

和 116 一个类型,但是稍微tricky一点,因为不是balance tree,而是更加 general的任意tree,也是要把next level 链接起来。所以对应的处理方法就是要有 dummyNodeForNextLevel 作为每一层的起点,同时该层需要一个 curr 以dummyNodeForNextLevel,对该层进行延伸!两者的分工明确,dummyNodeForNextL

2017-10-08 04:03:20 195

原创 FTPrep, 116 Populating Next Right Pointers in Each Node, TODO,再多code几遍,虽然总结写得还比较ok,但是还是手感不熟

代码:/** * Definition for binary tree with next pointer. * public class TreeLinkNode { * int val; * TreeLinkNode left, right, next; * TreeLinkNode(int x) { val = x; } * } */public

2017-10-08 04:01:20 344

原创 FTPrep, 115 Distinct Subsequences, 2D DP 大总结,值得一看

好题!2D DP问题,两个字符串的比较都逃不出这个套路啊~ 啊哈哈同类题型: edit distance, 两个子串的相互比较interleaving string,两个子串合并成一个串。两个subsequence的合并问题。distinct subsequence,两个子串的包含关系,也可以堪称是interleaving string的变体,因为短串是长串的一部分,剩下都可以认为

2017-10-08 03:29:02 221

原创 FTPrep, 114 Flatten Binary Tree to Linked List, comment中有总结,值得一看

这道题做过了不少次了,一直没有找到归类的类型。然后今天看的时候有了灵感,找到了对应的其他类型:1,先说high-level上这题的特意:一般来说,都会返回树的root,或者list 的head,但这道题不用,只是一个void的类型。helper function返回的不是头,而是尾巴!!这是特意的的地方,这个tail是为了下一次 连接 hook up用的!精准。所以helper functio

2017-10-08 03:04:31 308

原创 FTPrep, 113 Path Sum II

dfs + BT的套路;BT套路 标志: 输出是 list in list 形式。dfs套路 标志: 树的 路径和 问题。刚刚的代码, 5min,1 time bug-free/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode lef

2017-10-08 02:53:53 254

原创 FTPrep, 112 Path Sum

这道题是 prototype 原型,可以衍生出一系列的题,虽然是easy,但是要考虑细节,抓住其中的要点。关于path sum就有 5-8 道题,有不同的input形式,常见的是树,还有list in list(金子塔结构,相当于完全树),而树是可以不完整的。这一类题都可以总结到一起。刚刚写的代码:/** * Definition for a binary tree node. *

2017-10-08 02:35:22 194

原创 FTPrep, 111 Minimum Depth of Binary Tree

不废话,搞清楚定义就好,本质仍然是4种情况的判定。定义是:如果任何一只child为null,则minDepth是有腿的那条腿的高度。代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode righ

2017-10-07 12:59:16 153

原创 FTPrep, 110 Balanced Binary Tree

这题应该和 maxDepth 和 minDepth 放在一起。其实吧,maxDepth就是求树的总高度,可以省略了max,但是因为跟minDepth的概念放一起所以加了max。所以这一题就是求tree 的高度,即利用maxDepth的方法,来比较左右两支的差异即可。然后如果已经差异大于1 了,返回-1,这个-1是可以向上传递的,所以在condition里有表示。代码:/** *

2017-10-07 12:54:33 155

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除