📣 独立日限时特惠: VIP通行证立减$68
楼主: Sabrina_0413
跳转到指定楼层
上一主题 下一主题
收起左侧

今天开始刷题!希望自己可以坚持下去

 
🔗
 楼主| Sabrina_0413 2018-4-14 23:31:12 | 只看该作者
全局:
4月14日,medium:402,406
402. Remove K Digits
定义一个stack来协助解决
406. Queue Reconstruction by Height
本题关键在于排序:按照第一个元素降序,第二个元素升序:people=sorted(people,key=lambda x:(-x[0],x[1]),reverse=False)
回复

使用道具 举报

🔗
 楼主| Sabrina_0413 2018-4-17 08:57:28 | 只看该作者
全局:
4月15号:见闺蜜,吃吃喝喝逛逛聊聊,本来打算吃完午饭聊完天就各自回家游泳瑜伽,结果话一直聊不完最后一起堕落继续晚饭逛街聊天。。。
所以,偷懒了一天。。。
4月16号:终于刷了两道题。。。medium:435;452
435. Non-overlapping Intervals(以后关注一下答案)
依据最后一个元素升序排列,然后判断end和start的大小,若end大于start,则删除加一。(为什么这样求出来的是最小的呢?╭(╯^╰)╮)
https://en.wikipedia.org/wiki/Interval_scheduling#Interval_Scheduling_Maximization 这个链接以后多看看吧。
452. Minimum Number of Arrows to Burst Balloons   
将points按照第一个元素进行排序,然后判断尾部与相邻元素头部和尾部的大小,看是否有交集。

评分

参与人数 1大米 +5 收起 理由
carry12345678 + 5 给你点个赞!

查看全部评分

回复

使用道具 举报

🔗
 楼主| Sabrina_0413 2018-4-17 22:48:12 | 只看该作者
全局:
4月17:621,649
621. Task Scheduler
(1)先计算每个字母的个数,然后排序,求出出现次数最多的task所需要的时间:ans=frequency*(n+1)-n。然后判断是否存在相同frequency的,若有:ans+=1。最后返回ans 和task个数中,最大的那个。----这个方法竟然beat掉了100%。第一次哎,开森!
649. Dota2 Senate
这道题看了答案的。。。。
All()

开了半天会,打了一个晚上的羽毛球。。。。
回复

使用道具 举报

🔗
 楼主| Sabrina_0413 2018-4-19 11:54:12 | 只看该作者
全局:
4月18:659,714
"659. Split Array into Consecutive Subsequences
这道题不会做看的答案。用到了collection.Counter()
714. Best Time to Buy and Sell Stock with Transaction Fee--依旧不会做
(1)又是DP问题,不开森。。。只想说答案好棒~!
(2)beat100%的答案:定义一个state,state+=price-last_price,找出最高卖出价,并进行跟踪(看是否有更高的价)。。。很有点意思。"
关于股票买卖的所有问题:
https://leetcode.com/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/discuss/108870/Most-consistent-ways-of-dealing-with-the-series-of-stock-problems

Greedy的题也算是刷完了。。。继续加油!!
回复

使用道具 举报

🔗
 楼主| Sabrina_0413 2018-4-20 09:02:20 | 只看该作者
全局:
4月19日,今天开始做heap啦啦啦啦:215
215. Kth Largest Element in an Array
开始熟悉heap啦啦啦啦:heap是一个二叉树,它的所有父节点的值均不大于子节点的值,即heap[k] <= heap[2*k+1] and heap[k] <= heap[2*k+2]。它的最小值永远都是根节点。特点:heap的elements可以是tuple。
(1)heapq.heapify(x):把一个list变成heap。
(2)heapq.heappush(heap, item):把item加入到heap中去
(3)heapq.heappop(heap):去除并返回heap中最小的值。相当于heap.pop(0)
(4)heapq.heappushpop(heap, item):添加item到heap中,同时去除并返回最小的值
(5)heapq.heapreplace(heap, item):去除并返回最小的值,然后添加item到heap中去
https://www.youtube.com/watch?v=EuUBxM_E03E&pbjreload=10   这个视频把heap如何生成的讲的蛮清楚
回复

使用道具 举报

🔗
 楼主| Sabrina_0413 2018-4-20 22:12:22 | 只看该作者
全局:
4月20日:264,313
264. Ugly Number II
解答这道题的关键是明白ugly数字是生成的规律。除了1,所有的ugly数字都是[2,3,5]与2,3,5的乘积产生的。因此:
(1)逐个生成ugly=[],ugly[k]=min(ugly[t2]*2,ugly[t3]*3,ugly[t5]*5)
(2) 定义一个heap:p=[1],然后 不断添加值:u=heapq.headpop(p), for x in [2,3,5]: heapq.heappush(p,u*x);同时将U 放入ugly中(heap)==>这个方法很慢
313. Super Ugly Number
(1)对应于264的第一个答案,逐个产生ugly,只是需要使用循环(注意min的之中,有重复)
(2)定义heap:for i,prime in enumerate(primes): heapq.heappop(q,[prime,i]). 这个答案中,有一个避免重复的语句,还不太明白为什么那么做。。。二刷的时候再好好看看吧。

最近状态不是很好。。。。(๑•̀ㅂ•́)و✧加油!
回复

使用道具 举报

🔗
 楼主| Sabrina_0413 2018-4-21 19:09:23 | 只看该作者
全局:
4月21:373,807
"373. Find K Pairs with Smallest Sums
(1)        Memory Limit Exceeded:把所有的pair放入array中,然后把它们的和以及index(sum,index)放入heap中,并返回最小的k个。
(2)定义一个heap,然后heapq.heappush(heap,(-n1-n2,[n1,n2])),当heap的长度等于K时,比较-heap[0][0]与n1+n2的大小,若大于,则替换;若小于,则停止这轮循环.
(3)https://leetcode.com/problems/find-k-pairs-with-smallest-sums/discuss/84550/Slow-1-liner-to-Fast-solutions
807. Max Increase to Keep City Skyline
zip(*array) "
回复

使用道具 举报

🔗
 楼主| Sabrina_0413 2018-4-21 20:06:18 | 只看该作者
全局:
4月21:再加两道easy的,stack:496,682
"496. Next Greater Element I
(1)逐个查找的方法:效率很低啦
(2)定义stack和map==》用map来存储元素对(元素:元素之后最大的数字)
682. Baseball Game"
回复

使用道具 举报

🔗
 楼主| Sabrina_0413 2018-4-22 22:54:50 | 只看该作者
全局:
4月22日,medium:150,331
"150. Evaluate Reverse Polish Notation
331. Verify Preorder Serialization of a Binary Tree
1.很棒的答案:非空节点的出度为2,入度为1;空节点的出度为0,入度为1;因此,通过跟踪dif=outdegree-indegree,来进行判断。若真的为tree,则diff==0
https://leetcode.com/problems/verify-preorder-serialization-of-a-binary-tree/discuss/78551/7-lines-Easy-Java-Solution
2. stack:从左到右将node依次放入stack中,当第二个“#”出现的时候,pop掉顶端的“#”和相邻的数字。依次类推下去。最后stack为[#]"
回复

使用道具 举报

🔗
 楼主| Sabrina_0413 2018-4-23 20:54:10 | 只看该作者
全局:
4月23日:394,456
"394. Decode String
(1)stack,逐个字母来做---比较笨: 注意数字可能是大于一位数的。
(2)定义stack=[['',1]],和num=‘’,然后逐个跟踪---好方法。
456. 132 Pattern(见答案。。)--二刷的时候要好好看看。
看到一个很棒的答案:定义stack和largest_smaller,从nums的最后面进行遍历,stack放最大的,largest_smaller放第二大的,然后,若有元素小于largest_smaller,则返回True"
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表