
剑指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 · 106 阅读 · 0 评论 -
11. 旋转数组的最小数字
剑指 Offer 11. 旋转数组的最小数字难度简单把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组[3,4,5,1,2]为[1,2,3,4,5]的一个旋转,该数组的最小值为1class Solution: def minArray(self, numbers: List[int]) -> int: i, j = 0, len(numbers) - 1 w...原创 2020-07-21 01:27:43 · 106 阅读 · 0 评论 -
06. 从尾到头打印链表
剑指 Offer 06. 从尾到头打印链表难度简单42输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。使用递归方法最简单 一句代码搞定# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def reversePrin原创 2020-07-21 00:32:30 · 237 阅读 · 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 · 133 阅读 · 0 评论 -
05. 替换空格
题目:请实现一个函数,将一个字符串中的空格替换成“%20”=======================================1=========================================def replaceSpace(str1): """ 有额外的空间;从后面逐个往前替换,不可从前往后,因为字符串的长度越来越长 """ ...原创 2019-09-21 01:38:16 · 248 阅读 · 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 · 194 阅读 · 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 · 243 阅读 · 0 评论 -
04. 二维数组中的查找
题目:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。我自己考虑是从每行的第一列开始比较,但是这样需要同时使用两行的第一个数据来确定target可能在的行,这就要分情况判断当前行是不是最后一行,分到最后还是比较麻烦,书上给出的方法是从右上角开始比较,当然也可以...原创 2020-04-20 21:42:46 · 182 阅读 · 0 评论 -
03. 找出数组中重复的数字。
题目:在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。直接使用Python中的集合,其实也就是哈希表,进行处理,代码如下:class Solution: def findRepeatNumber(self, nums: List[int])...原创 2020-04-20 19:52:51 · 218 阅读 · 0 评论 -
24题 反转链表
题目:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。代码如下:class ListNode: def __init__(self, x): self.val = x self.next = Noneclass Solution: def reverseList(self, head: ListNode) -&g...原创 2020-04-19 17:26:22 · 144 阅读 · 0 评论 -
18题 删除链表中指定的节点
该题是LeetCode中的,相对于原书的题目有改动题目: 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点,返回删除后的链表的头节点。前提:该链表各节点的值是不相同的class ListNode: def __init__(self, data): self.val = data self.next = Noneclass...原创 2020-04-18 09:37:57 · 303 阅读 · 0 评论 -
22题 链表中倒数第k个节点
这道题对我来说难点就是临界点不好找,总是找不准慢指针啥时候开始移动,还有就是如果链表的长度不够k咋办的情况,最终的代码如下:class ListNode: def __init__(self, data): self.val = data self.next = Noneclass Solution: def FindKthTail(sel...原创 2020-04-17 22:09:16 · 143 阅读 · 0 评论