随笔分类 -  剑指offer

剑指offer做题记录
摘要:剑指 Offer 29. 顺时针打印矩阵 描述 略 思路 画好图,定义好(x1, y1, x2, y2)的物理意义 注意循环条件 注意终止位置 更新内外层 图片来自https://leetcode-cn.com/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/s 阅读全文
posted @ 2020-08-22 23:25 珊珊来迟0 阅读(121) 评论(0) 推荐(0)
摘要:solution naive class MinStack: def __init__(self): """ initialize your data structure here. """ self.stack = [] self.min_stack = [] def push(self, x: 阅读全文
posted @ 2020-08-16 23:05 珊珊来迟0 阅读(79) 评论(0) 推荐(0)
摘要:看的题解, 叹为观止 class Solution: def spiralOrder(self, matrix: List[List[int]]) -> List[int]: ret = [] while matrix: ret += matrix.pop(0) matrix = list(zip( 阅读全文
posted @ 2020-08-16 22:45 珊珊来迟0 阅读(58) 评论(0) 推荐(0)
摘要:solution recursive class Solution: def isSymmetric(self, root: TreeNode) -> bool: def helper(q, p): if not q and not p: return True if not q and p: re 阅读全文
posted @ 2020-08-16 22:34 珊珊来迟0 阅读(58) 评论(0) 推荐(0)
摘要:solution rescursive class Solution: def mirrorTree(self, root: TreeNode) -> TreeNode: def helper(node): if not node: return left = helper(node.left) r 阅读全文
posted @ 2020-08-16 22:23 珊珊来迟0 阅读(62) 评论(0) 推荐(0)
摘要:思路 dfs 注意注释掉的代表完全子树 class Solution: def isSubStructure(self, A: TreeNode, B: TreeNode) -> bool: def helper(a, b): # if not a and not b: # return True 阅读全文
posted @ 2020-08-16 22:20 珊珊来迟0 阅读(72) 评论(0) 推荐(0)
摘要:思路 递归 class Solution: def reverseList(self, head: ListNode) -> ListNode: def helper(head): if head is None or head.next is None: return head ret = hel 阅读全文
posted @ 2020-08-16 14:52 珊珊来迟0 阅读(60) 评论(0) 推荐(0)
摘要:描述 None tags: list, double pointer 思路 两次遍历 class Solution { public: ListNode* getKthFromEnd(ListNode* head, int k) { ListNode* node = head; int length 阅读全文
posted @ 2020-08-16 14:35 珊珊来迟0 阅读(76) 评论(0) 推荐(0)
摘要:描述 None tags: partition 思路 快排 class Solution(object): def exchange(self, nums): """ :type nums: List[int] :rtype: List[int] """ l, r = 0, len(nums) - 阅读全文
posted @ 2020-08-16 14:16 珊珊来迟0 阅读(65) 评论(0) 推荐(0)
摘要:描述 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 tags: recursive, double pointer 思路 递归 class Solution { public: ListNode* deleteNode(ListNode* head 阅读全文
posted @ 2020-08-16 12:26 珊珊来迟0 阅读(58) 评论(0) 推荐(0)
摘要:描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗 阅读全文
posted @ 2020-08-15 18:47 珊珊来迟0 阅读(35) 评论(0) 推荐(0)
摘要:描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。 tags: binary search 思路 二分法:题解 class 阅读全文
posted @ 2020-08-15 18:36 珊珊来迟0 阅读(54) 评论(0) 推荐(0)
摘要:描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 tags: recursive 思路 迭代 class Solution: def numWa 阅读全文
posted @ 2020-08-15 18:32 珊珊来迟0 阅读(47) 评论(0) 推荐(0)
摘要:描述 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。 阅读全文
posted @ 2020-08-15 18:29 珊珊来迟0 阅读(50) 评论(0) 推荐(0)
摘要:描述:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) tags: stack 思路 声明两个栈,一个入栈,一个出栈。注意出栈 阅读全文
posted @ 2020-08-15 18:24 珊珊来迟0 阅读(53) 评论(0) 推荐(0)
摘要:描述:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 tags: recursive 思路 利用栈来存储,出栈即可 class Solution: def reversePrint(self, head: ListNode) -> List[int]: res = [] whi 阅读全文
posted @ 2020-08-15 18:21 珊珊来迟0 阅读(22) 评论(0) 推荐(0)
摘要:描述:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 tags: array 思路 python无聊解法 class Solution: def replaceSpace(self, s: str) -> str: return s.replace(' ', '%20') 阅读全文
posted @ 2020-08-15 18:17 珊珊来迟0 阅读(57) 评论(0) 推荐(0)
摘要:描述:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 tags: binary search 思路 利用数组有序的定义,使用二分查找法。从左下或右上出发,例从左下出 阅读全文
posted @ 2020-08-15 18:14 珊珊来迟0 阅读(33) 评论(0) 推荐(0)
摘要:题目:找出数组中重复的数字。 描述:在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 阅读全文
posted @ 2020-08-15 18:06 珊珊来迟0 阅读(47) 评论(0) 推荐(0)

点击右上角即可分享
微信分享提示