剑指offer
ㄣ知冷煖★
CSDN人工智能领域优质创作者、阿里云专家博主、腾讯云开发者内容共创官、百林哲教育专家、全国3D建模大赛国奖获得者、省奖若干、Kaggle竞赛银牌若干、BPAA算法大赛模型鉴赏师、在职算法工程师,计算机硕士。
展开
-
动态规划基本思想以及应用
动态规划基本思想前言一、动态规划的定义二、动态规划的适用情况(即被求解问题具有的性质)2-1、最优子结构2-2、子问题重叠2-3、无后效性三、动态规划应用(斐波那契数列)3-1、采用传统递归方法3-2、使用动态规划思想四、动态规划解决问题的步骤总结前言有些问题迟早要去面对。一、动态规划的定义动态规划:把一个待求解的问题划分成若干个子问题,先把各个子问题求解得出,再得出原问题的答案。对于多次出现的子问题,只求解一次,把答案保存起来,方便后续直接调用。(对于一些需要重复求解子问题的题目有很好的效果).原创 2022-01-06 14:30:30 · 790 阅读 · 0 评论 -
剑指 Offer 35. 复杂链表的复制
原文链接:剑指 Offer 35. 复杂链表的复制.原创 2021-11-29 16:31:41 · 294 阅读 · 0 评论 -
剑指 Offer 24. 反转链表
链接: 原文链接.# Definition for singly-linked list.class ListNode: def __init__(self, x): self.val = x self.next = Noneclass Solution: # 这个题不会,参考大佬写法 # 双指针,修改每个节点的指针指向。 def reverseList(self, head: ListNode) -> ListNode:原创 2021-10-28 17:02:31 · 120 阅读 · 0 评论 -
剑指 Offer 10- II. 青蛙跳台阶问题
链接: 原文链接.class Solution: def numWays(self, n: int) -> int: # f(0) = 1, f(1) = 1, f(2) = 2, # f(3) = 3 f(4) = 5, f(5) = 8 # 此题类似于上一道斐波那契数列,只不过是从第二个数字1开始的。 a, b = 1, 1 for i in range(n): a, b = b,原创 2021-10-28 14:14:53 · 100 阅读 · 0 评论 -
剑指 Offer 10- I. 斐波那契数列
链接: 原文链接.class Solution: # 自己写的。 # def fib(self, n: int) -> int: # # 第0项是0,第1项是1 # f_n_2 = 0 # f_n_1 = 1 # # i是用来计数的,和n来作比较。 # # i为什么要命名为2?这样可以保证n为0或者1时不会进入下边的while循环。 # i = 2 # # 第n个值是多少原创 2021-10-28 11:39:29 · 120 阅读 · 2 评论 -
剑指 Offer 11. 旋转数组的最小数字
链接: 原文链接.class Solution: # 自己写的一种查找方法 # def minArray(self, numbers: List[int]) -> int: # # 遍历,如果遇到比之前都小的值就直接返回。 # for i in range(len(numbers)-1): # if numbers[i+1] < numbers[i]: # return numbers[i+原创 2021-10-25 17:48:33 · 119 阅读 · 0 评论 -
剑指 Offer 50. 第一个只出现一次的字符
链接: 原文链接.class Solution: # 个人写法,使用字典来记录字符出现的次数。 # def firstUniqChar(self, s: str) -> str: # # 注意空值的情况 # # 注意字符都不是只出现一次的情况 # # 方法:keys()、values() # dic = {} # if s: # for i in range(len(s)):原创 2021-10-25 15:31:04 · 107 阅读 · 0 评论 -
剑指 Offer 53 - I. 在排序数组中查找数字 I (★★★)
链接: 原文链接.class Solution: # 自己写的解法,直接遍历 def search(self, nums: List[int], target: int) -> int: # nums、target count = 0 for i in nums: if target == i: count += 1 return count# 大佬的写法,二分原创 2021-10-22 17:34:10 · 106 阅读 · 0 评论 -
剑指 Offer 53 - II. 0~n-1中缺失的数字
链接: 原文链接.class Solution: # 自己写的方法,比较啰嗦一些。 # def missingNumber(self, nums: List[int]) -> int: # if nums[0] != 0: # return 0 # else: # for i in range(len(nums)): # if i == len(nums)-1: #原创 2021-10-22 17:28:48 · 397 阅读 · 0 评论 -
剑指 Offer 03. 数组中重复的数字
链接: 原文链接.class Solution: # # 自己写的,效率极低,执行时间特别长。 # def findRepeatNumber(self, nums: List[int]) -> int: # temp = [] # # print(nums) # for i in nums: # if i not in temp: # temp.append(i) #原创 2021-10-22 16:32:32 · 104 阅读 · 0 评论 -
剑指 Offer 58 - II. 左旋转字符串
链接: 原文链接.class Solution: # 切片法 # def reverseLeftWords(self, s: str, n: int) -> str: # # s: # temp = s[:n] # s = s[n:] # s = s + temp # return s # def reverseLeftWords(self, s: str, n: int) ->原创 2021-10-22 15:48:13 · 99 阅读 · 0 评论 -
剑指 Offer 05. 替换空格
链接: 原文链接.class Solution: # 个人写法:直接字符串连接 # def replaceSpace(self, s: str) -> str: # temp = '' # for i in s: # if i == ' ': # temp += '%20' # else: # temp += i # retu原创 2021-10-21 14:36:43 · 105 阅读 · 0 评论 -
剑指 Offer 06. 从尾到头打印链表
链接: 原文链接.# Definition for singly-linked list.class ListNode: def __init__(self, x): self.val = x self.next = Noneclass Solution: # 自己写的,调用insert,比较费时间。 # def reversePrint(self, head: ListNode) -> List[int]: # lis原创 2021-10-21 11:53:57 · 103 阅读 · 0 评论 -
剑指 Offer 30. 包含min函数的栈
原文链接:链接: 原文链接.总结:因为个人写的调用min函数,导致执行时间大幅增长# 自己写的# class MinStack:# def __init__(self):# """# initialize your data structure here.# """# self.A = []# def push(self, x: int) -> None:# self.A.appe原创 2021-10-21 11:31:07 · 116 阅读 · 0 评论 -
数组与矩阵——3.数组中重复的数字
数组中重复的数字一、pandas是什么?一、pandas是什么?原网址:https://github.com/CyC2018/CS-Notes/blob/master/notes/%E5%89%91%E6%8C%87%20Offer%20%E9%A2%98%E8%A7%A3%20-%20%E7%9B%AE%E5%BD%95.md原创 2021-09-30 13:13:02 · 124 阅读 · 0 评论