![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
山水如初
想找个关于 Python 的工作,只会这个。
展开
-
x 的平方根:简单问题不简单
该题是一个很经典的二分查找算法。原创 2020-09-05 12:29:27 · 269 阅读 · 1 评论 -
巧用进位解决加一问题
若在循环中返回最终结果,说明只改动已有数组即可。否则,最前面需要添加进位 1。原创 2020-09-01 11:13:23 · 530 阅读 · 0 评论 -
字母异位词分组:defaultdict 的妙用
本题的关键在于如何找到映射关系,可以对字符串进行排序并使用排序后的字符串(元组)作为键(异位词相同的特征),键值就是所有分组的结果。原创 2020-08-26 11:31:52 · 180 阅读 · 0 评论 -
twoSum & threeSum & fourSum
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。原创 2020-08-20 19:49:09 · 157 阅读 · 0 评论 -
整数反转的两种思路
两种方式解决此问题:转换法、数学方法。原创 2020-08-15 11:00:29 · 1045 阅读 · 1 评论 -
链表反转问题 3:K 个一组反转
代码总体使用递归,前半部分判断剩余元素是否达到 k 个:若没达到,就直接返回结果,若达到,继续下面的运算。而反转 k 个元素之后,……原创 2020-08-10 22:37:34 · 307 阅读 · 0 评论 -
链表反转问题 2:两两反转
leetcode 24:两两交换链表中的节点难度等级:中等 ⭐⭐迭代def swapPairs(self, head: ListNode) -> ListNode: pre = dummy = ListNode(0) dummy.next = head # pre, pre.next = self, head while pre.next and pre.next.next: a, b = pre.next, pre.next.next原创 2020-08-10 21:42:33 · 814 阅读 · 0 评论 -
链表反转问题 1:整体反转
leetcode 206:反转链表难度等级:简单 ⭐迭代定义前后两个指针,遍历的时候将后面指针的 next 赋值给前面,形成反向链表。# Definition for singly-linked list.class ListNode: def __init__(self, x): self.val = x self.next = Noneclass Solution(object): def reverseList(self, head: Li原创 2020-08-10 21:15:29 · 474 阅读 · 0 评论 -
顺(逆)时针打印矩阵
顺时针打印矩阵剑指 Offer 29. 顺时针打印矩阵输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]解决方法先把最前面的元素提取了。然后将剩下元素逆时针旋转 90 度,再依次循环进行。逆时针:竖排提取 → 元素翻转 。def spiralOrder(self, matrix: List[List[int]]) -> List[int]:原创 2020-08-08 21:35:13 · 478 阅读 · 0 评论 -
两个数组的交集 II:Python 语法糖 Counter
两个数组的交集 IIleetcode 350给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。我们可以不考虑输出结果的顺序。进阶:如果给定的数组已经排好序呢?你将如何优化你的算法?如果 nums1 的大小比原创 2020-08-05 17:04:34 · 393 阅读 · 2 评论 -
转变数组后最接近目标值的数组和
转变数组后最接近目标值的数组和leetcode 1300给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value ,使得将数组中所有大于 value 的值变成 value 后,数组的和最接近 target (最接近表示两者之差的绝对值最小)。如果有多种使得和最接近 target 的方案,请你返回这些整数中的最小值。请注意,答案不一定是 arr 中的数字。示例 1:输入:arr = [4,9,3], target = 10输出:3解释:当选择 value 为 3原创 2020-08-03 17:23:15 · 269 阅读 · 1 评论 -
n 种方法实现最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。原创 2020-07-31 19:14:51 · 294 阅读 · 1 评论 -
用 Python 实现一个字典树
leetcote 208:实现 Trie实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。字典树Trie 树,又叫字典树、前缀树,本质就是利用字符串之间的公共前缀,将重复的前缀合并在一起。如下图就是包含了 how,hi,her,hello,so,see 的字典树。Trie 树是一种空间换时间的思路。主要用于查找前缀匹配的字符串。方法由于 python 语言的高抽象性,可以使用 dict 的嵌套来表示树结构。class Trie:原创 2020-07-31 18:45:58 · 1363 阅读 · 0 评论 -
解决岛屿数量问题:并查集、DFS
岛屿数量leetcode:200给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例:输入:11110110101100000000输出: 1解法一:DFS染色法是一种简单高效的回溯法。使用染色法可以重置访问过的数据,本次染色可以上下左右判断。每次进入 DFS 都要记录次数,DFS 完成的唯一功能就是染色。染色的缺点是原创 2020-07-28 19:47:36 · 657 阅读 · 1 评论 -
合并 K 个排序链表:堆、分治法
我们维护一个大小为 k 的堆,堆由每个链表的首元素组成,每次堆弹出一个元素,就由该链表的下个结点进入。原创 2020-07-03 11:17:43 · 565 阅读 · 4 评论