剑指offer
行走的五花肉
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 06. 从尾到头打印链表
如何使用带有头指针的列表class Solution:def reversePrint(self, head: ListNode) -> List[int]:s = []while head:s.append(head.val)head = head.nextreturn s[::-1]递归法 (重点关注回溯阶段如何执行)原创 2021-09-02 08:48:40 · 83 阅读 · 0 评论 -
排序算法实现
冒泡排序do=[2, 15, 5, 9, 7, 6, 4, 12, 5, 4, 2, 64, 5, 6, 4, 2, 3, 54, 45, 4, 44]def maopao(do): false = 0 true = 1# i代表i之前的元素都有序 for i in range(0,len(do)):# flag代表本次冒泡中是否发生交换 flag = false for j in range(i,len(do)-1): .原创 2021-08-31 17:17:44 · 70 阅读 · 0 评论 -
剑指 Offer 10- II. 青蛙跳台阶问题
自己使用的方法自己写的,在leetcode上,为什么递归没法使用,哪里出错了class Solution: def fib(self, n: int) -> int: if n == 0: return 0 elif n == 1: return 1 elif n >= 2: return fib(n-1)+fib(n-1)Jupyter验证我们的方法原创 2021-08-30 20:31:01 · 52 阅读 · 0 评论 -
面试题22. 链表中倒数第 k 个节点(双指针,清晰图解)
自己超时的一种解法,利用栈来存储结点,之后将栈内元素输出K词class Solution: def getKthFromEnd(self, head: ListNode, k: int) -> ListNode: stack = [] out= [] while head: stack.append(head.val) head = head.next while(k): .原创 2021-08-30 15:15:16 · 121 阅读 · 0 评论 -
剑指 Offer 15. 二进制中1的个数
阅读完题目后的问题(1) 如何将输入的一个十进制数转换为32位的二进制数。(2) 遍历一个列表,以及判断语句,统计1的个数。看完题解后的思路:(1) 首先,将一个十进制整数输入进计算机,他会自动转换为2进制(2) 其次,根据(1)那么就可以发现,当我们用n&1时候便有:n的最右一位为1则:n&1=1:n的最右一位为0则:n&1=0(统计完后,将n无符号循环右移一位n>>1)class Solution: def hammingWeight(sel原创 2021-08-30 10:11:44 · 45 阅读 · 0 评论 -
剑指 Offer 17. 打印从1到最大的n位数
class Solution: def printNumbers(self, n: int) -> List[int]: min = 1 max = 10**n total = [x for x in range(min,max)] return totalclass Solution: def printNumbers(self, n: int) -> List[int]: min = 1原创 2021-08-30 08:35:27 · 48 阅读 · 0 评论 -
剑指 Offer 11. 旋转数组的最小数字
方法一:边比较边移动,输出最大的元素。class Solution: def minArray(self, numbers: List[int]) -> int: for i in range(0,len(numbers)-1): if(numbers[i]<numbers[i+1]): temp = [] temp = numbers[i] n.原创 2021-08-30 08:28:04 · 48 阅读 · 0 评论 -
剑指 Offer 09. 用两个栈实现队列
一定要if语句里面带有return的情况,如果满足,该函数后续的语句便不执行。以及题目的含义,两个数组代表的是在两个栈中的操作方式,以及参数。// 题目没看懂,["CQueue","appendTail","deleteHead","deleteHead"]不知如何在里面进行操作。 class CQueue: def __init__(self): self.A, self.B = [], [] // 声明两个栈,A栈实现进栈操作,B栈实现出栈操作,按照题目要求用两个栈.原创 2021-08-28 10:00:34 · 49 阅读 · 0 评论 -
剑指 Offer 05. 替换空格
取巧使用字符串的替换方法。class Solution: def replaceSpace(self, s: str) -> str: s=s.replace(' ','%20') return s别人的方法,申请一个新的列表,用新增代替替换。重新构建一个字符串。class Solution: def replaceSpace(self, s: str) -> str: res = [] for c in s:原创 2021-08-26 22:33:24 · 45 阅读 · 0 评论 -
剑指offer 03.数组中的重复数字
法一:使用collections.Counter函数计算频率,遍历字典,将所有频率大于1的键都放入一个列表中,随机输出列表。import collectionsimport randomclass Solution: def findRepeatNumber(self, nums: List[int]) -> int: s=[] fre = collections.Counter(nums) for i in dict(fre).keys(原创 2021-08-26 22:27:30 · 55 阅读 · 0 评论