前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode笔记:Weekly Contest 311

LeetCode笔记:Weekly Contest 311

作者头像
codename_cys
发布2022-09-27 21:54:44
2070
发布2022-09-27 21:54:44
举报
文章被收录于专栏:我的充电站我的充电站

0. 小结

这一次依然没有参加比赛,一边看英超一边打的比赛,结果发现都是暴力解居然能够把4道题全部搞定,也是有点奇葩……

1. 题目一

给出题目一的试题链接如下:

1. 解题思路

这一题其实就两种情况,如果给的数是偶数,那么这个数本身就是2的倍数,直接返回即可,反之将其乘以2然后返回即可。

2. 代码实现

给出python代码实现如下:

代码语言:javascript
复制
class Solution:
    def smallestEvenMultiple(self, n: int) -> int:
        if n % 2 == 0:
            return n
        else:
            return 2*n

提交代码评测得到:耗时65ms,占用内存13.8MB。

2. 题目二

给出题目二的试题链接如下:

1. 解题思路

这一题本质上就是将字符串转换成数字之后看一下最长的连续数的个数。

2. 代码实现

给出python代码实现如下:

代码语言:javascript
复制
class Solution:
    def longestContinuousSubstring(self, s: str) -> int:
        pre = 0
        res, cnt = 0, 0
        for ch in s:
            ch = ord(ch) - ord('a')
            if ch - pre == 1:
                cnt += 1
            else:
                res = max(res, cnt)
                cnt = 1
            pre = ch
        res = max(res, cnt)
        return res

提交代码评测得到:耗时1303ms,占用内存15MB。

3. 题目三

给出题目三的试题链接如下:

1. 解题思路

这一题我的实现方法比较暴力,就是一个二次遍历,首先通过一个bfs获取所有的元素,然后用另一个bfs重新赋值一下即可。

2. 代码实现

给出python代码实现如下:

代码语言:javascript
复制
class Solution:
    def reverseOddLevels(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
        nodes = []
        
        def bfs(root, depth):
            nonlocal nodes
            if root is None:
                return
            if len(nodes) == depth:
                nodes.append([])
            nodes[depth].append(root.val)
            bfs(root.left, depth+1)
            bfs(root.right, depth+1)
            return
        
        bfs(root, 0)

        def bfsv2(root, depth):
            nonlocal nodes
            if root is None:
                return
            if depth % 2 == 0:
                root.val = nodes[depth].pop(0)
            else:
                root.val = nodes[depth].pop()
            bfsv2(root.left, depth+1)
            bfsv2(root.right, depth+1)
            return
        
        bfsv2(root, 0)
        return root   

提交代码评测得到:耗时4138ms,占用内存20.5MB。

4. 题目四

给出题目四的试题链接如下:

1. 解题思路

这一题我一开始是通过暴力循环完成的,结果刚好可以通过测试样例,算是卡了bug吧。

后来看了一下其他大佬们的解答,发现其实有更加巧妙的解法,即使用trie树,因此,这里就只放trie树的解法了。

2. 代码实现

给出python代码实现如下:

代码语言:javascript
复制
class Trie:
    def __init__(self):
        self.trie = {}
    
    def add(self, word):
        trie = self.trie
        for ch in word:
            if ch not in trie:
                trie[ch] = {"val": 1}
            else:
                trie[ch]["val"] += 1
            trie = trie[ch]
        return
    
    def get_score(self, word):
        res = 0
        trie = self.trie
        for ch in word:
            res += trie[ch]["val"]
            trie = trie[ch]
        return res
    
class Solution:
    def sumPrefixScores(self, words: List[str]) -> List[int]:
        trie = Trie()
        
        for w in words:
            trie.add(w)
        
        return [trie.get_score(w) for w in words]

提交代码评测得到:耗时1242ms,占用内存107.4MB。

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-09-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0. 小结
  • 1. 题目一
    • 1. 解题思路
      • 2. 代码实现
      • 2. 题目二
        • 1. 解题思路
          • 2. 代码实现
          • 3. 题目三
            • 1. 解题思路
              • 2. 代码实现
              • 4. 题目四
                • 1. 解题思路
                  • 2. 代码实现
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                  http://www.vxiaotou.com