![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
☀️오동동
这个作者很懒,什么都没留下…
展开
-
【剑指 Offer 03. 数组中重复的数字】【Python】
偷懒了两天。本来想放弃刷题了,感觉不出进步,不过和朋友聊天后,还是决定继续,因为不刷题的时间被我拿去也没做什么有益的事情,还是被拿来刷手机了,所以继续刷吧。今天这道题比较简单,我的想法也是哈希表,还是看了题解,降低了空间复杂度。class Solution: def findRepeatNumber(self, nums: List[int]) -> int: for i in range(len(nums)): if nums[i]==i:原创 2020-11-30 14:06:11 · 165 阅读 · 0 评论 -
【剑指 Offer 19. 正则表达式匹配】【Python】【动态规划】
这道题是困难的题目,也是力扣在剑指offer中动态规划类型的最后一题,拿到这道题思考之后,发现我是没有思路的,看了题解之后才知道用二维数组定义状态方程。力扣的题解和这个视频都讲的很仔细,也便于理解。视频的代码如下:class Solution: def isMatch(self, s: str, p: str) -> bool: mrow=len(s) ncol=len(p) dp=[[False for i in range(ncol+1)原创 2020-11-25 10:45:27 · 302 阅读 · 0 评论 -
【剑指 Offer 14- II. 剪绳子 II】【整数拆分】【Python】【动态规划】
剪绳子2和1的题目是一样的,只是2要求返回结果必须取余,要考虑大数越界。我16号的时候在力扣上做了剪绳子1,今天做2的时候已经完全没有记忆,看了力扣的题解也没记起来。看了16号的博客才发现原来当时是看了别人的视频写的,当时理解的就不太好,所以今天也不出所料的没想出来,就连看到代码也不知道自己为什么这样写。又去看了一遍视频重新理解了一下。class Solution: def cuttingRope(self, n: int) -> int: dp=[0 for _ in ra原创 2020-11-24 10:37:03 · 202 阅读 · 0 评论 -
【剑指 Offer 63. 股票的最大利润】【力扣刷题】【Python】【动态规划】
我的想法我的状态转移方程后面的部分没有总结出规律,看了题解才想到后面的一坨只要用第i天的价格减去前i-1天的最小值就可以。class Solution: def maxProfit(self, prices: List[int]) -> int: if not prices: return 0 dp=[0]*len(prices) dp[0]=0 for i in range(1,len(prices原创 2020-11-23 10:29:23 · 211 阅读 · 0 评论 -
【剑指 Offer 46. 把数字翻译成字符串】【剑指 Offer 10- II. 青蛙跳台阶问题】【198. 打家劫舍】【动态规划】
青蛙跳台阶,打家劫舍,字母相同编码三道题思路总结原创 2020-11-19 21:59:12 · 143 阅读 · 0 评论 -
【剑指 Offer 46. 把数字翻译成字符串】【力扣刷题】【Python】【动态规划】
ss原创 2020-11-18 09:59:46 · 248 阅读 · 0 评论 -
【剑指 Offer 47. 礼物的最大价值】【力扣刷题】【Python】【动态规划】
class Solution: def maxValue(self, grid: List[List[int]]) -> int: for i in range(len(grid)): #行 for j in range(len(grid[0])): #列 if i==0 and j==0: continue elif i==0:原创 2020-11-17 10:40:01 · 112 阅读 · 0 评论 -
【剑指 Offer 14- I. 剪绳子】【力扣刷题】【Python】【动态规划】
class Solution: def integerBreak(self, n: int) -> int: dp = [0] * (n + 1) for i in range(2, n + 1): for j in range(i): dp[i] = max(dp[i], j * (i - j), j * dp[i - j]) return dp[n]具体讲解参考这个视频讲解视频.原创 2020-11-16 21:42:26 · 114 阅读 · 0 评论 -
【剑指 Offer 42. 连续子数组的最大和】【力扣刷题】【Python】【动态规划】
参考解答动态规划class Solution: def maxSubArray(self, nums: List[int]) -> int: for i in range(1,len(nums)): if nums[i-1]>0: nums[i]+=nums[i-1] return max(nums)原创 2020-11-13 15:00:37 · 134 阅读 · 1 评论 -
【剑指 Offer 10- I. 斐波那契数列】【力扣刷题】【Python】
我的想法看到题目的第一想法就是 递归求解,但是提交后超出时间限制class Solution: def fib(self, n: int) -> int: sumNum=0 if n==0: return sumNum elif n==1: sumNum=1 return sumNum else: return self.fib(n原创 2020-11-12 10:57:03 · 114 阅读 · 0 评论 -
【剑指 Offer 10- II. 青蛙跳台阶问题】【力扣刷题】【Python】【动态规划】
我的想法:斐波那契代码就不写了和昨天一样,不过我一开始没找到递归表达式,他是要考虑最后一次跳时不是一个台阶就是两个台阶。详细可以参考青蛙跳台阶动态规划的方法是我初次接触到,我明天学吧。...原创 2020-11-11 15:01:13 · 229 阅读 · 1 评论 -
【剑指 Offer 35. 复杂链表的复制】【力扣刷题】【Python】
class Node: def __init__(self, x: int, next: 'Node' = None, random: 'Node' = None): self.val = int(x) self.next = next self.random = random"""class Solution: def copyRandomList(self, head: 'Node') -> 'Node': new原创 2020-11-10 10:23:20 · 94 阅读 · 0 评论 -
【剑指 Offer 52. 两个链表的第一个公共节点】【力扣刷题】【Python】
力扣双指针class Solution: def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode: a,b=headA,headB while a!=b: if a==None: a=headB else: a=a.next if原创 2020-11-06 16:10:24 · 211 阅读 · 0 评论 -
【剑指 Offer 18. 删除链表的节点】【力扣刷题】【Python】
我的想法:双指针遍历链表,判断结点的值是否为输入的值,若相等将该节点前一个结点指向后一个结点,返回新的链表。# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def deleteNode(self, head: ListNode, val: int)原创 2020-11-05 11:03:15 · 204 阅读 · 1 评论 -
【剑指Offer 24. 反转链表】【力扣刷题】【Python】
方法一:多指针# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def reverseList(self, head: ListNode) -> ListNode: pre=None cur=head原创 2020-11-04 16:38:15 · 135 阅读 · 0 评论 -
【剑指offer22链表中倒数第k个节点】【力扣刷题】【Python】
方法一:自己的想法+参考力扣# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def getKthFromEnd(self, head: ListNode, k: int) -> ListNode: res=[]原创 2020-11-03 14:20:37 · 248 阅读 · 0 评论 -
【剑指offer6:从尾到头打印链表】【力扣刷题】【Python】
方法一堆栈# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def reversePrint(self, head: ListNode) -> List[int]: stack=[] if not head: return [] while hea原创 2020-11-03 13:43:25 · 115 阅读 · 0 评论 -
【剑指offer17:打印从1到最大的n位数】【力扣刷题】【Python】
方法一class Solution: def printNumbers(self, n: int) -> List[int]: li=[] head=1 end=9*(10**(n-1))+1 while n>=1: for i in range(head,end): li.append(i) n-=1 head=li[原创 2020-11-02 10:39:23 · 140 阅读 · 0 评论 -
【剑指offer58:左旋转字符串】【力扣刷题:简单】【Python】
方法一:切片class Solution: def reverseLeftWords(self, s: str, n: int) -> str: return s[n:len(s)]+s[0:n]方法二:元组与join函数class Solution: def reverseLeftWords(self, s: str, n: int) -> str: newstr=[] for i in range(n,len(s)):原创 2020-11-02 09:47:01 · 805 阅读 · 0 评论