![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
鸡腿很有想法
这个作者很懒,什么都没留下…
展开
-
leetcode哈希表刷题:拼写单词
最近开始系统地刷题目了,看到比较有意思的题目就写一下心得体会吧~ 这道题题目如下所示: 考虑到chars中每个字符都只能被使用一次,因此不能直接使用set来去重,而是应该考虑使用dict来给每个字符计数,然后在依次对words中的每个字符进行计数,然后再进行比较,将符合条件的字符的长度加和,得到最终结果。 使用字典的代码如下所示: from collections import defaultdict class Solution: def countCharacters(self, words:原创 2020-06-16 22:45:46 · 291 阅读 · 0 评论 -
leetcode链表刷题:二进制链表转整数
这是一道比较简单的题目,但是还是有一点小小的收获的: 这道题其实只要把全部数字读出来就可以转化成结果。但是转化结果的方法也还是有点技巧的。 我最开始使用的方法是把二进制数字数出来,转化成字符串然后再转成十进制。在这个方法里,我了解到了int这个函数可以把任意进制的数字转化成十进制的。这里有使用方法 代码如下所示: class Solution: def getDecimalValue(self, head: ListNode) -> int: binary = 0原创 2020-06-10 23:57:55 · 160 阅读 · 0 评论 -
leetcode链表刷题:删除中间节点
题目如下所示: 这道题正如评论区所言,最大的难度就是读懂题目本身。这道题的意思是:有一个链表,题目给了我这个链表上除了第一个和最后一个节点以外的一个中间节点。然后我要把这个中间节点给删掉。也就是说,我们能够进行操作的,是一个链表上的一个节点。 知道了这个,那题目就不难了。我最开始想的方法比较笨,把所有节点都给改了一遍: # Definition for singly-linked list. # class ListNode: # def __init__(self, x): #原创 2020-06-10 13:44:48 · 179 阅读 · 0 评论 -
leetcode链表刷题:两数相加
题目如下所示: 这道题很好理解,直接按照链的顺序,先把数字读出来,然后再直接相加就好了。我最开始用了列表来记录数字,但是后来觉得可以直接操作,把数字读出来,然后再递增地乘上位数。 最后处理输出列表的时候有两种方法,一个是直接对数字动手,用整数除得到最高位的数字,然后对余数进行迭代操作,最终输出链表;还有一种方法是借助字符串来操作,把数字先转成字符串,然后再转成数字,一位一位加入到链表中。我用了第二种方法,感觉比较直观一点????代码如下: # Definition for singly-linked li原创 2020-06-09 23:06:28 · 105 阅读 · 0 评论 -
随手一题:将数字变成 0 的操作次数
题目如下所示: 题目很简单,但是模拟操作过程很快就能得到结果,但是我觉得这种简单的题应该是会有一行代码解决的,因此我便尝试用一行代码来解这题。 因为操作过程中只有除以2和减1两个步骤,因此可以考虑用二进制位运算来处理。 我们来考虑一下二进制数字在进行上述两个操作时,数字是怎么变化的: 以6为例,二进制下6为110,除以2得到3,3用二进制表示为11,与6的二进制数相比,少了个0。 对3继续处理,减1得到2,用二进制表示为10,2除以2得到1,用二进制表示为1。 对于3的二进制数11,要变成1的话,需要进原创 2020-06-08 20:21:22 · 612 阅读 · 0 评论 -
随手一题:砖墙
2020/06/05 傍晚 18:05 倾盆大雨 这道题目如下所示: 通过图例可以看到,结果2可以认为是墙的厚度6减去缝隙的数量4得到的。墙的厚度我们可以很容易得到,计算wall这个列表的长度就可以了,那缝隙的数量要怎么得到呢?由于缝隙是某一块砖块的终点,因此可以用dict对wall中每个小列表的元素累加和进行计数,这样就得到某个位置上的缝隙数了。然后要使穿过的砖块数量最少,那么缝隙的数量就要最多,这时候把字典的values拉出来取个最大值就好了。 有一点需要注意的是,不能把最后一块砖给算上,如果算上了就原创 2020-06-05 18:19:09 · 189 阅读 · 0 评论