随笔分类 -  剑指Offer

剑指Offer:链表中环的入口结点
摘要:思路: Python: # -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def EntryNodeOfLoop(se 阅读全文
posted @ 2022-05-06 23:41 catch(...) 阅读(15) 评论(0) 推荐(0) 编辑
面试题:约瑟夫环
摘要:为初始化每次删除node后的位置,将需要删除的node前的节点后移,从而完成位置初始化。 Python: class Solution: def LastRemaining_Solution(self , n: int, m: int) -> int: # write code here res=[ 阅读全文
posted @ 2022-05-04 14:19 catch(...) 阅读(24) 评论(0) 推荐(0) 编辑
剑指 Offer 29. 顺时针打印矩阵
摘要:思路:循环打印即可,终止条件是存储数组的长度等于原始数组中元素的个数 Python: class Solution: def spiralOrder(self, matrix: List[List[int]]) -> List[int]: res=[] if not matrix: return r 阅读全文
posted @ 2022-04-27 20:56 catch(...) 阅读(18) 评论(0) 推荐(0) 编辑
剑指 Offer 50. 第一个只出现一次的字符
摘要:思路:查表法,首先建立字典,遍历字符串判断字典中的值是否为1,若为1,则返回。 Python: class Solution: def firstUniqChar(self, s: str) -> str: if not s: return ' ' from collections import C 阅读全文
posted @ 2022-04-18 22:27 catch(...) 阅读(13) 评论(0) 推荐(0) 编辑
剑指 Offer 32 - III. 从上到下打印二叉树 III
摘要:思路:在二叉树的层序遍历基础上加一个校验位,通过校验位来判断此层需要正序添加还是逆序添加。 Python: class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]: res=[] if not root: ret 阅读全文
posted @ 2022-04-18 22:23 catch(...) 阅读(10) 评论(0) 推荐(0) 编辑
剑指 Offer 32 - II. 从上到下打印二叉树 II
摘要:思路:遍历每层,将每层的节点的value存到tmp数组中,每迭代完成一层,将tmp存入至res并清空。 Python: class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]: res,queue=[],[] i 阅读全文
posted @ 2022-04-18 22:07 catch(...) 阅读(15) 评论(0) 推荐(0) 编辑
剑指 Offer 32 - I. 从上到下打印二叉树
摘要:思路:二叉树的前序遍历,存到res中返回。 Python: #dfsclass Solution: def levelOrder(self, root: TreeNode) -> List[int]: res=[] def dfs(root): if not root: return None re 阅读全文
posted @ 2022-04-18 21:24 catch(...) 阅读(15) 评论(0) 推荐(0) 编辑
剑指 Offer 25. 合并两个排序的链表
摘要:思路:遍历两个链表,按顺序添加在dummy链表后即可 Python: class Solution: def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode: dummy=res=ListNode(None) while l1 阅读全文
posted @ 2022-04-18 21:21 catch(...) 阅读(18) 评论(0) 推荐(0) 编辑
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
摘要:思路:类似快排的思路,从两端开始查找,左边找到第一个偶数,右边找到第一个奇数进行交换,进入递归即可。 Python: class Solution: def exchange(self, nums: List[int]) -> List[int]: i,j=0,len(nums)-1 while i 阅读全文
posted @ 2022-04-18 21:09 catch(...) 阅读(12) 评论(0) 推荐(0) 编辑
剑指 Offer 11. 旋转数组的最小数字
摘要:思路:遍历数组,如果后一个元素比前一个元素小,说明从此开始旋转,输出后一个元素。若遍历结束仍未找到,则说明旋转从index=0开始,输出队首元素。 Python: class Solution: def minArray(self, numbers: List[int]) -> int: if no 阅读全文
posted @ 2022-04-17 00:39 catch(...) 阅读(15) 评论(0) 推荐(0) 编辑
剑指 Offer 10- I. 斐波那契数列
摘要:思路:简单递归,脚本语言实现即可 class Solution: def fib(self, n: int) -> int: res=[0,1,1] if n<=2: return res[n] for i in range(3,n+1): res.append(res[i-1]+res[i-2]) 阅读全文
posted @ 2022-04-17 00:32 catch(...) 阅读(12) 评论(0) 推荐(0) 编辑
剑指 Offer 06. 从尾到头打印链表
摘要:思路:遍历链表,通过数组来存储读取到的value,最终逆序输出 Python: # Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = N 阅读全文
posted @ 2022-04-17 00:13 catch(...) 阅读(15) 评论(0) 推荐(0) 编辑
剑指 Offer 05. 替换空格
摘要:思路:遍历查找空格进行替换 Python: class Solution: def replaceSpace(self, s: str) -> str: res=[] for c in s: if c==' ': res.append("%20") else: res.append(c) retur 阅读全文
posted @ 2022-04-17 00:08 catch(...) 阅读(16) 评论(0) 推荐(0) 编辑
剑指 Offer 04. 二维数组中的查找
摘要:思路:从第一行末尾元素进行查找,分别确定行列数(若最末尾元素小于target,则行数+1,若大于target,则列数-1) Python: class Solution: def findNumberIn2DArray(self, matrix: List[List[int]], target: i 阅读全文
posted @ 2022-04-16 22:14 catch(...) 阅读(23) 评论(0) 推荐(0) 编辑
剑指 Offer 03. 数组中重复的数字(C++)
摘要:思路1:对于排序后的数组,通过前后两个元素进行比较判定是否存在重复数字 代码实现 C++ class Solution { public: int findRepeatNumber(vector<int>& nums) { sort(nums.begin(), nums.end()); for (i 阅读全文
posted @ 2022-04-16 18:58 catch(...) 阅读(49) 评论(0) 推荐(0) 编辑

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