![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer(第2版)
自己对 剑指offer 上面习题做的笔记
chnhbhndchngn
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 64. 求1+2+…+n
剑指 Offer 64. 求1+2+…+n 难度中等 求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 class Solution: def sumNums(self, n: int) -> int: return int((1 + n) * n / 2) 这是使用了数学的思想 如果使用递归的思想呢? 首先确定python的布尔的操作结果: 也就是进行布尔and操..原创 2020-09-15 12:23:57 · 88 阅读 · 0 评论 -
11. 旋转数组的最小数字
剑指 Offer 11. 旋转数组的最小数字 难度简单 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组[3,4,5,1,2]为[1,2,3,4,5]的一个旋转,该数组的最小值为1 class Solution: def minArray(self, numbers: List[int]) -> int: i, j = 0, len(numbers) - 1 w...原创 2020-07-21 01:27:43 · 89 阅读 · 0 评论 -
06. 从尾到头打印链表
剑指 Offer 06. 从尾到头打印链表 难度简单42 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 使用递归方法最简单 一句代码搞定 # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def reversePrin原创 2020-07-21 00:32:30 · 209 阅读 · 0 评论 -
03. 数组中重复的数字
剑指 Offer 03. 数组中重复的数字 难度简单 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 class Solution: def findRepeatNumber(self, nums: List[int]) -> int: for i in range(len(nums)):原创 2020-07-10 18:44:36 · 109 阅读 · 0 评论 -
05. 替换空格
题目:请实现一个函数,将一个字符串中的空格替换成“%20” =======================================1========================================= def replaceSpace(str1): """ 有额外的空间;从后面逐个往前替换,不可从前往后,因为字符串的长度越来越长 """ ...原创 2019-09-21 01:38:16 · 223 阅读 · 0 评论 -
31题. 栈的压入、弹出序列
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。 class Solution: def validateStackSequences(self, pushed, popped): stack = [] i = 0原创 2020-06-18 09:29:47 · 170 阅读 · 0 评论 -
68题 最近公共节点(python3解答)
面试题68 II. 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 直接上代码 class Solution: def lowestCommonAncestor(self, root, p, q) -> 'TreeNode': if root is None or root == p or root == q: return root left = self.lowestCommonAncestor(原创 2020-05-10 13:27:52 · 223 阅读 · 0 评论 -
04. 二维数组中的查找
题目:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 我自己考虑是从每行的第一列开始比较,但是这样需要同时使用两行的第一个数据来确定target可能在的行,这就要分情况判断当前行是不是最后一行,分到最后还是比较麻烦,书上给出的方法是从右上角开始比较,当然也可以...原创 2020-04-20 21:42:46 · 160 阅读 · 0 评论 -
03. 找出数组中重复的数字。
题目: 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 直接使用Python中的集合,其实也就是哈希表,进行处理,代码如下: class Solution: def findRepeatNumber(self, nums: List[int])...原创 2020-04-20 19:52:51 · 189 阅读 · 0 评论 -
24题 反转链表
题目:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 代码如下: class ListNode: def __init__(self, x): self.val = x self.next = None class Solution: def reverseList(self, head: ListNode) -&g...原创 2020-04-19 17:26:22 · 128 阅读 · 0 评论 -
18题 删除链表中指定的节点
该题是LeetCode中的,相对于原书的题目有改动 题目: 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点,返回删除后的链表的头节点。 前提:该链表各节点的值是不相同的 class ListNode: def __init__(self, data): self.val = data self.next = None class...原创 2020-04-18 09:37:57 · 274 阅读 · 0 评论 -
22题 链表中倒数第k个节点
这道题对我来说难点就是临界点不好找,总是找不准慢指针啥时候开始移动,还有就是如果链表的长度不够k咋办的情况,最终的代码如下: class ListNode: def __init__(self, data): self.val = data self.next = None class Solution: def FindKthTail(sel...原创 2020-04-17 22:09:16 · 126 阅读 · 0 评论