随笔分类 -  Leetcode-哈希表

Leetcode练习(Python):哈希表类:第149题:直线上最多的点数:给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。
摘要:题目: 直线上最多的点数:给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上。 思路: 使用斜率来判断,但是在计算斜率时要使用精确计算。 需要考虑不存在斜率,存在斜率和重复点的情况,思路较简单。 这道题在工商银行FinTech笔试题里做过。 程序: from decimal imp 阅读全文
posted @ 2020-04-30 16:01 桌子哥 阅读(913) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):哈希表类:第76题:最小覆盖子串:给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串。
摘要:题目: 最小覆盖子串:给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串。 说明: 如果 S 中不存这样的子串,则返回空字符串 ""。 如果 S 中存在这样的子串,我们保证它是唯一的答案。 思路: 使用滑动窗口法。 程序: from collections i 阅读全文
posted @ 2020-04-30 14:00 桌子哥 阅读(1056) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):哈希表类:第37题:解数独:编写一个程序,通过已填充的空格来解决数独问题。 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。
摘要:题目: 解数独:编写一个程序,通过已填充的空格来解决数独问题。 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。 空白格用 '.' 表示。 思路: 这道题太难了,按照自己的思路 阅读全文
posted @ 2020-04-30 10:54 桌子哥 阅读(445) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):哈希表类:第30题:串联所有单词的子串:给定一个字符串 s 和一些长度相同的单词 words。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。 注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。
摘要:题目: 串联所有单词的子串:给定一个字符串 s 和一些长度相同的单词 words。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。 注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。 思路: 暴力解法,使用了滑动窗口的 阅读全文
posted @ 2020-04-29 21:50 桌子哥 阅读(497) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):哈希表类:第187题:重复的DNA序列:所有 DNA 都由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。 编写一个函数来查找 DNA 分子中所有出现超过一次的 10 个字母长的序列(子串)。
摘要:题目: 重复的DNA序列:所有 DNA 都由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。 编写一个函数来查找 DNA 分子中所有出现超过一次的 10 个字母长的序列(子串)。 思路: 滑动窗口法 阅读全文
posted @ 2020-04-29 18:04 桌子哥 阅读(589) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):哈希表类:第166题:分数到小数:给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数。 如果小数部分为循环小数,则将循环的部分括在括号内。
摘要:题目: 分数到小数:给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数。 如果小数部分为循环小数,则将循环的部分括在括号内。 思路: 一开始想到用哈希表来存储小数点后的部分,就是没有想出一个很好的表达,一直也不对,看来一个大神的解答,写的很好啊 阅读全文
posted @ 2020-04-28 16:41 桌子哥 阅读(742) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):哈希表类:第138题: 给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。 要求返回这个链表的 深拷贝。 我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。
摘要:题目: 给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。 要求返回这个链表的 深拷贝。 我们用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示: val:一个表示 Node.val 的整数。 阅读全文
posted @ 2020-04-28 14:15 桌子哥 阅读(195) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):哈希表类:第94题:给定一个二叉树,返回它的中序 遍历。
摘要:题目: 给定一个二叉树,返回它的中序 遍历。 思路: 练习过很多次了,都记住了,但是没有找到用哈希表的点。使用递归来实现很方便,掌握中序遍历的原理就好。 程序: # Definition for a binary tree node. # class TreeNode: # def __init__ 阅读全文
posted @ 2020-04-28 13:48 桌子哥 阅读(242) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):哈希表类:第49题:字母异位词分组:给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
摘要:题目: 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。 说明: 所有输入均为小写字母。 不考虑答案输出的顺序。 思路: 使用sort()将单词排序。 程序: class Solution: def groupAnagrams(self, strs: List[ 阅读全文
posted @ 2020-04-28 10:54 桌子哥 阅读(761) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):哈希表类:第36题:有效的数独:判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。
摘要:题目: 判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。 上图是一个部分填充的有效的数独。 数独部分空格内已填入了数字,空白 阅读全文
posted @ 2020-04-28 10:36 桌子哥 阅读(469) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):哈希表类:第242题:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
摘要:题目: 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 思路: 使用两个哈希表,最后判断这两个哈希表是否相等,思路较简单。 程序: class Solution: def isAnagram(self, s: str, t: str) -> bool: length 阅读全文
posted @ 2020-04-27 16:33 桌子哥 阅读(663) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):哈希表类:第205题:给定两个字符串 s 和 t,判断它们是否是同构的。 如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。
摘要:题目: 给定两个字符串 s 和 t,判断它们是否是同构的。 如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。 思路: 使用两个哈希表来实现,思路较简单。 程序: cl 阅读全文
posted @ 2020-04-27 16:21 桌子哥 阅读(432) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):哈希表类:第204题:统计所有小于非负整数 n 的质数的数量。
摘要:题目: 统计所有小于非负整数 n 的质数的数量。 思路: 按照标签使用哈希表,借助判断质数的函数导致超时了,如程序1所示,测试可以通过。后来看使用一种很快的方法叫厄拉多塞筛法,如程序2所示。 程序1: class Solution: def countPrimes(self, n: int) ->  阅读全文
posted @ 2020-04-27 16:03 桌子哥 阅读(402) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):哈希表类:第202题:编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为  1,那么这个数就是快乐数。 如果 n 是快乐数就返回 True ;不是,则返回 False 。
摘要:题目: 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。 如果 n 是快乐数就返回 True ;不是,则返 阅读全文
posted @ 2020-04-27 15:08 桌子哥 阅读(802) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):哈希表类:第136题:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
摘要:题目: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 思路: 使用哈希表,第一次遍历记录元素出现的次数,第二次遍历查询只出现一次的元素。 程序: class Solution: def singleNumber(self, nums: Lis 阅读全文
posted @ 2020-04-27 14:58 桌子哥 阅读(1252) 评论(0) 推荐(0) 编辑
Leetcode练习(Python):哈希表类:第3题:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
摘要:题目: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 思路: 使用哈希表变得简单了很多,使用暴力法很容易超时。 程序: class Solution: def lengthOfLongestSubstring(self, s: str) -> int: length = len( 阅读全文
posted @ 2020-04-27 14:41 桌子哥 阅读(1027) 评论(0) 推荐(0) 编辑