<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[TongWu1的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/TongWu1</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; TongWu1]]></copyright><item><title><![CDATA[【剑指 Offer 03. 数组中重复的数字】【Python】]]></title><link>https://blog.youkuaiyun.com/TongWu1/article/details/110387012</link><guid>https://blog.youkuaiyun.com/TongWu1/article/details/110387012</guid><author>TongWu1</author><pubDate>Mon, 30 Nov 2020 14:06:11 +0800</pubDate><description><![CDATA[偷懒了两天。本来想放弃刷题了，感觉不出进步，不过和朋友聊天后，还是决定继续，因为不刷题的时间被我拿去也没做什么有益的事情，还是被拿来刷手机了，所以继续刷吧。
今天这道题比较简单，我的想法也是哈希表，还是看了题解，降低了空间复杂度。
class Solution:
    def findRepeatNumber(self, nums: List[int]) -&gt; int:
        for i in range(len(nums)):
            if nums[i]==i:
   ]]></description><category></category></item><item><title><![CDATA[【剑指 Offer 19. 正则表达式匹配】【Python】【动态规划】]]></title><link>https://blog.youkuaiyun.com/TongWu1/article/details/110118357</link><guid>https://blog.youkuaiyun.com/TongWu1/article/details/110118357</guid><author>TongWu1</author><pubDate>Wed, 25 Nov 2020 10:45:27 +0800</pubDate><description><![CDATA[这道题是困难的题目，也是力扣在剑指offer中动态规划类型的最后一题，拿到这道题思考之后，发现我是没有思路的，看了题解之后才知道用二维数组定义状态方程。
力扣的题解和这个视频都讲的很仔细，也便于理解。视频的代码如下：
class Solution:
    def isMatch(self, s: str, p: str) -&gt; bool:
        mrow=len(s)
        ncol=len(p)
        dp=[[False for i in range(ncol+1)]]></description><category></category></item><item><title><![CDATA[【剑指 Offer 14- II. 剪绳子 II】【整数拆分】【Python】【动态规划】]]></title><link>https://blog.youkuaiyun.com/TongWu1/article/details/110039703</link><guid>https://blog.youkuaiyun.com/TongWu1/article/details/110039703</guid><author>TongWu1</author><pubDate>Tue, 24 Nov 2020 10:37:03 +0800</pubDate><description><![CDATA[剪绳子2和1的题目是一样的，只是2要求返回结果必须取余，要考虑大数越界。我16号的时候在力扣上做了剪绳子1，今天做2的时候已经完全没有记忆，看了力扣的题解也没记起来。看了16号的博客才发现原来当时是看了别人的视频写的，当时理解的就不太好，所以今天也不出所料的没想出来，就连看到代码也不知道自己为什么这样写。又去看了一遍视频重新理解了一下。
class Solution:
    def cuttingRope(self, n: int) -&gt; int:
        dp=[0 for _ in ra]]></description><category></category></item><item><title><![CDATA[【剑指 Offer 63. 股票的最大利润】【力扣刷题】【Python】【动态规划】]]></title><link>https://blog.youkuaiyun.com/TongWu1/article/details/109986800</link><guid>https://blog.youkuaiyun.com/TongWu1/article/details/109986800</guid><author>TongWu1</author><pubDate>Mon, 23 Nov 2020 10:29:23 +0800</pubDate><description><![CDATA[我的想法
我的状态转移方程后面的部分没有总结出规律，看了题解才想到后面的一坨只要用第i天的价格减去前i-1天的最小值就可以。

class Solution:
    def maxProfit(self, prices: List[int]) -&gt; int:
        if not prices:
            return 0
        dp=[0]*len(prices)
        dp[0]=0
        for i in range(1,len(prices]]></description><category></category></item><item><title><![CDATA[【剑指 Offer 46. 把数字翻译成字符串】【剑指 Offer 10- II. 青蛙跳台阶问题】【198. 打家劫舍】【动态规划】]]></title><link>https://blog.youkuaiyun.com/TongWu1/article/details/109765825</link><guid>https://blog.youkuaiyun.com/TongWu1/article/details/109765825</guid><author>TongWu1</author><pubDate>Thu, 19 Nov 2020 21:59:12 +0800</pubDate><description><![CDATA[青蛙跳台阶，打家劫舍，字母相同编码三道题思路总结

]]></description><category></category></item><item><title><![CDATA[【剑指 Offer 46. 把数字翻译成字符串】【力扣刷题】【Python】【动态规划】]]></title><link>https://blog.youkuaiyun.com/TongWu1/article/details/109751610</link><guid>https://blog.youkuaiyun.com/TongWu1/article/details/109751610</guid><author>TongWu1</author><pubDate>Wed, 18 Nov 2020 09:59:46 +0800</pubDate><description><![CDATA[ss

]]></description><category></category></item><item><title><![CDATA[【剑指 Offer 47. 礼物的最大价值】【力扣刷题】【Python】【动态规划】]]></title><link>https://blog.youkuaiyun.com/TongWu1/article/details/109737341</link><guid>https://blog.youkuaiyun.com/TongWu1/article/details/109737341</guid><author>TongWu1</author><pubDate>Tue, 17 Nov 2020 10:40:01 +0800</pubDate><description><![CDATA[class Solution:
    def maxValue(self, grid: List[List[int]]) -&gt; int:
        for i in range(len(grid)):      #行
            for j in range(len(grid[0])):  #列
                if i==0 and j==0:
                    continue
                elif i==0:
    ]]></description><category></category></item><item><title><![CDATA[【剑指 Offer 14- I. 剪绳子】【力扣刷题】【Python】【动态规划】]]></title><link>https://blog.youkuaiyun.com/TongWu1/article/details/109730625</link><guid>https://blog.youkuaiyun.com/TongWu1/article/details/109730625</guid><author>TongWu1</author><pubDate>Mon, 16 Nov 2020 21:42:26 +0800</pubDate><description><![CDATA[class Solution:
    def integerBreak(self, n: int) -&gt; 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]

具体讲解参考这个视频讲解视频

.]]></description><category></category></item><item><title><![CDATA[【剑指 Offer 42. 连续子数组的最大和】【力扣刷题】【Python】【动态规划】]]></title><link>https://blog.youkuaiyun.com/TongWu1/article/details/109674965</link><guid>https://blog.youkuaiyun.com/TongWu1/article/details/109674965</guid><author>TongWu1</author><pubDate>Fri, 13 Nov 2020 15:00:37 +0800</pubDate><description><![CDATA[参考解答
动态规划
class Solution:
    def maxSubArray(self, nums: List[int]) -&gt; int:
        for i in range(1,len(nums)):
            if nums[i-1]&gt;0:
                nums[i]+=nums[i-1]
        return max(nums)


]]></description><category></category></item><item><title><![CDATA[【剑指 Offer 10- I. 斐波那契数列】【力扣刷题】【Python】]]></title><link>https://blog.youkuaiyun.com/TongWu1/article/details/109597189</link><guid>https://blog.youkuaiyun.com/TongWu1/article/details/109597189</guid><author>TongWu1</author><pubDate>Thu, 12 Nov 2020 10:57:03 +0800</pubDate><description><![CDATA[我的想法
看到题目的第一想法就是 递归求解，但是提交后超出时间限制
class Solution:
    def fib(self, n: int) -&gt; int:
        sumNum=0
        if n==0:
            return sumNum
        elif n==1:
            sumNum=1
            return sumNum
        else:
            return self.fib(n]]></description><category></category></item><item><title><![CDATA[【剑指 Offer 10- II. 青蛙跳台阶问题】【力扣刷题】【Python】【动态规划】]]></title><link>https://blog.youkuaiyun.com/TongWu1/article/details/109622318</link><guid>https://blog.youkuaiyun.com/TongWu1/article/details/109622318</guid><author>TongWu1</author><pubDate>Wed, 11 Nov 2020 15:01:13 +0800</pubDate><description><![CDATA[我的想法：斐波那契
代码就不写了和昨天一样，不过我一开始没找到递归表达式，他是要考虑最后一次跳时不是一个台阶就是两个台阶。
详细可以参考青蛙跳台阶
动态规划的方法是我初次接触到，我明天学吧。

...]]></description><category></category></item><item><title><![CDATA[【剑指 Offer 35. 复杂链表的复制】【力扣刷题】【Python】]]></title><link>https://blog.youkuaiyun.com/TongWu1/article/details/109593553</link><guid>https://blog.youkuaiyun.com/TongWu1/article/details/109593553</guid><author>TongWu1</author><pubDate>Tue, 10 Nov 2020 10:23:20 +0800</pubDate><description><![CDATA[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') -&gt; 'Node':
        new]]></description><category></category></item><item><title><![CDATA[【剑指 Offer 52. 两个链表的第一个公共节点】【力扣刷题】【Python】]]></title><link>https://blog.youkuaiyun.com/TongWu1/article/details/109532270</link><guid>https://blog.youkuaiyun.com/TongWu1/article/details/109532270</guid><author>TongWu1</author><pubDate>Fri, 06 Nov 2020 16:10:24 +0800</pubDate><description><![CDATA[力扣双指针

class Solution:
    def getIntersectionNode(self, headA: ListNode, headB: ListNode) -&gt; ListNode:
        a,b=headA,headB
        while a!=b:
            if a==None:
                a=headB
            else:
                a=a.next
            if]]></description><category></category></item><item><title><![CDATA[【剑指 Offer 18. 删除链表的节点】【力扣刷题】【Python】]]></title><link>https://blog.youkuaiyun.com/TongWu1/article/details/109506541</link><guid>https://blog.youkuaiyun.com/TongWu1/article/details/109506541</guid><author>TongWu1</author><pubDate>Thu, 05 Nov 2020 11:03:15 +0800</pubDate><description><![CDATA[我的想法:双指针
遍历链表，判断结点的值是否为输入的值，若相等将该节点前一个结点指向后一个结点，返回新的链表。
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    def deleteNode(self, head: ListNode, val: int)]]></description><category></category></item><item><title><![CDATA[【剑指Offer 24. 反转链表】【力扣刷题】【Python】]]></title><link>https://blog.youkuaiyun.com/TongWu1/article/details/109470076</link><guid>https://blog.youkuaiyun.com/TongWu1/article/details/109470076</guid><author>TongWu1</author><pubDate>Wed, 04 Nov 2020 16:38:15 +0800</pubDate><description><![CDATA[方法一：多指针
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def reverseList(self, head: ListNode) -&gt; ListNode:
        pre=None
        cur=head
     ]]></description><category></category></item><item><title><![CDATA[【剑指offer22链表中倒数第k个节点】【力扣刷题】【Python】]]></title><link>https://blog.youkuaiyun.com/TongWu1/article/details/109468317</link><guid>https://blog.youkuaiyun.com/TongWu1/article/details/109468317</guid><author>TongWu1</author><pubDate>Tue, 03 Nov 2020 14:20:37 +0800</pubDate><description><![CDATA[方法一：自己的想法+参考力扣
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def getKthFromEnd(self, head: ListNode, k: int) -&gt; ListNode:
        res=[]
       ]]></description><category></category></item><item><title><![CDATA[【剑指offer6：从尾到头打印链表】【力扣刷题】【Python】]]></title><link>https://blog.youkuaiyun.com/TongWu1/article/details/109467794</link><guid>https://blog.youkuaiyun.com/TongWu1/article/details/109467794</guid><author>TongWu1</author><pubDate>Tue, 03 Nov 2020 13:43:25 +0800</pubDate><description><![CDATA[方法一堆栈
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def reversePrint(self, head: ListNode) -&gt; List[int]:
        stack=[]
        if not head:
           return []
        while hea]]></description><category></category></item><item><title><![CDATA[【剑指offer17：打印从1到最大的n位数】【力扣刷题】【Python】]]></title><link>https://blog.youkuaiyun.com/TongWu1/article/details/109443560</link><guid>https://blog.youkuaiyun.com/TongWu1/article/details/109443560</guid><author>TongWu1</author><pubDate>Mon, 02 Nov 2020 10:39:23 +0800</pubDate><description><![CDATA[方法一
class Solution:
    def printNumbers(self, n: int) -&gt; List[int]:
        li=[]
        head=1
        end=9*(10**(n-1))+1
        while n&gt;=1:
            for i in range(head,end):
                li.append(i)
            n-=1
            head=li[]]></description><category></category></item><item><title><![CDATA[【剑指offer58：左旋转字符串】【力扣刷题：简单】【Python】]]></title><link>https://blog.youkuaiyun.com/TongWu1/article/details/109442467</link><guid>https://blog.youkuaiyun.com/TongWu1/article/details/109442467</guid><author>TongWu1</author><pubDate>Mon, 02 Nov 2020 09:47:01 +0800</pubDate><description><![CDATA[方法一：切片
class Solution:
    def reverseLeftWords(self, s: str, n: int) -&gt; str:
        return s[n:len(s)]+s[0:n]

方法二：元组与join函数
class Solution:
    def reverseLeftWords(self, s: str, n: int) -&gt; str:
        newstr=[]
        for i in range(n,len(s)):
]]></description><category></category></item><item><title><![CDATA[【顺序表和链表】【栈和队列】]]></title><link>https://blog.youkuaiyun.com/TongWu1/article/details/108741869</link><guid>https://blog.youkuaiyun.com/TongWu1/article/details/108741869</guid><author>TongWu1</author><pubDate>Wed, 23 Sep 2020 10:27:01 +0800</pubDate><description><![CDATA[栈
先进后出
顺序表实现栈（在尾部插入和弹出，时间复杂度为O(1））
class stack(object):
    def __init__(self):
        self.__List = []

    def push(self, item):
        return self.__List.append(item)

    def pop(self):
        return self.__List.pop()

    def size(self):
        re]]></description><category></category></item></channel></rss>