楼主: Reborn2beCoder
跳转到指定楼层
上一主题 下一主题
收起左侧

[Leetcode] June LeetCoding Challenge

🔗
 楼主| Reborn2beCoder 2020-6-3 12:18:45 | 只看该作者
全局:
machecazzo 发表于 2020-6-2 17:55
[mw_shl_code=python,true]class Solution:
    def deleteNode(self, node):
        """

只给node本身的话要怎么循环呀?
回复

使用道具 举报

🔗
 楼主| Reborn2beCoder 2020-6-3 12:19:40 | 只看该作者
全局:
6/2 https://leetcode.com/problems/delete-node-in-a-linked-list/
  1. var deleteNode = function(node) {
  2.     node.val = node.next.val;
  3.     node.next = node.next.next;
  4. };
复制代码


回复

使用道具 举报

🔗
ichwaredu 2020-6-4 10:30:09 | 只看该作者
全局:
Reborn2beCoder 发表于 2020-6-3 12:18
只给node本身的话要怎么循环呀?

好像这个题目要你删除第一个给的node,所以删除第一个。。
回复

使用道具 举报

🔗
ichwaredu 2020-6-4 10:37:40 | 只看该作者
全局:
  1. class Solution:
  2.     def twoCitySchedCost(self, costs: List[List[int]]) -> int:  
  3.         diff = sorted(costs, key = lambda x: x[0]-x[1])
  4.         N = len(costs)//2
  5.         total = 0
  6.         for i in range(N):
  7.             total+= diff[i][0]
  8.         for j in range(N, 2*N):
  9.             total += diff[j][1]
  10.         return total
复制代码


第一反应dp,但是dp太慢了。

评分

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

查看全部评分

回复

使用道具 举报

🔗
 楼主| Reborn2beCoder 2020-6-4 14:01:50 | 只看该作者
全局:
6/3 https://leetcode.com/problems/two-city-scheduling/
一开始看到题目有点懵逼,在纸上写写画画半天终于找到了灵感。Greedy类的问题真的很需要灵光一闪的瞬间lol

  1. var twoCitySchedCost = function(costs) {
  2.     if(!costs || !costs.length || !costs.length % 2) return 0;
  3.     costs.sort((p1, p2) => p1[0] - p1[1] - (p2[0] - p2[1]));
  4.     let sum = 0;
  5.     costs.forEach((val, idx) => sum += idx < costs.length/2 ? val[0] : val[1]);
  6.     return sum;
  7. };
复制代码
回复

使用道具 举报

🔗
 楼主| Reborn2beCoder 2020-6-4 14:02:49 | 只看该作者
全局:
ichwaredu 发表于 2020-6-3 18:37
[mw_shl_code=python,true]class Solution:
    def twoCitySchedCost(self, costs: List]) -> int:  
   ...

这个dp要怎么做呀?想了半天没找到思路。。
回复

使用道具 举报

🔗
machecazzo 2020-6-4 17:01:23 | 只看该作者
全局:
本帖最后由 machecazzo 于 2020-6-4 17:03 编辑

[size={"x":491,"y":1,"w":338,"h":24,"abs_x":515,"abs_y":419}][size={&quot;x&quot;:502,&quot;y&quot;:1,&quot;w&quot;:338,&quot;h&quot;:24,&quot;abs_x&quot;:526,&quot;abs_y&quot;:419}]Reborn2beCoder 发表于 2020-6-4 14:02
这个dp要怎么做呀?想了半天没找到思路。。


感觉没必要dp,单纯贪心就行了,我的解法就是楼上老哥的算法再优化一点,后面两个2/N的循环其实可以合成一个,但其实也没影响时间复杂度
另外吐槽一下今天的reverse string,货真价实的easy……
  1. class Solution:
  2.     def twoCitySchedCost(self, costs: List[List[int]]) -> int:
  3.         costs.sort(key=lambda l:(l[0]-l[1]))
  4.         res=0
  5.         for i in range(0,len(costs)//2):
  6.             res+=costs[i][0]+costs[len(costs)//2+i][1]
  7.         return res
复制代码




评分

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

查看全部评分

回复

使用道具 举报

🔗
ichwaredu 2020-6-5 07:52:09 | 只看该作者
全局:
Reborn2beCoder 发表于 2020-6-4 14:02
这个dp要怎么做呀?想了半天没找到思路。。

dp没有必要,超级慢。我找不到之前submit的code了,思路是从假设所有人都去B,选N个人去A,minimize cost
回复

使用道具 举报

🔗
 楼主| Reborn2beCoder 2020-6-5 11:46:23 | 只看该作者
全局:
6/4 https://leetcode.com/problems/reverse-string/

  1. var reverseString = function(s) {
  2.     if(!s || s.length < 2) return;
  3.     let i=0, j=s.length-1;
  4.     while(i<j) {
  5.         [s[i++], s[j--]] = [s[j], s[i]];
  6.     }
  7.     return;
  8. };
复制代码
回复

使用道具 举报

🔗
 楼主| Reborn2beCoder 2020-6-5 11:48:08 | 只看该作者
全局:
machecazzo 发表于 2020-6-4 01:01
Reborn2beCoder 发表于 2020-6-4 14:02
这个dp要怎么做呀?想了半天没找到思路。。

确实是lol 是怕一开始太难把大家劝退吗。。
回复

使用道具 举报

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

本版积分规则

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