leetcode-19-删除链表的倒数第N个结点 4、当n=0时,快指针q与慢指针p同时向前移动;直到快指针q先遍历完链表即q==Null时,慢指针p走到倒数第n+1的节点。此时将慢指针指向链表倒数第n-1个节点即可,通过p.next=p.next.next实现。初始化两个指针,两个指针间隔n个结点。当快指针走到链表结尾时,慢指针。走到倒数第n+1个节点。此时将慢指针节点的next指向倒数第n-1个节点。1、初始化哑节点dummy=ListNode(0,head);3、使快指针q先向前走n+1步;2、快指针q和慢指针p都指向哑节点dummy;
leetcode-5-最长回文子串 (2)当子串的长度大于3时即j-i>=3时,子串是否为回文串取决于dp[i+1][j-1]即dp[i][j]=dp[i+1][j-1];7、如果dp[i][j]==True,则更新dic_len的key值为j-i+1,对应的value值为s[i,j+1];dp[0][4]的计算逻辑:在s[0]==s[4]时,子串长度大于3则dp[0][4]=dp[1][3];=s[j]时,则dp[i][j]不是回文串直接将dp[i][j]赋值为False;=s[4]时,dp[1][4]=False;
leetcode-88-合并两个有序数组 当len1<0则代表nums1先遍历完成但nums2中仍有元素存在即nums2中剩余的元素小于nums1[0],此时则需要将nums[0:len2+1]赋值给nums1[0:len2+1]。(2)如果nums2[len2]<=nums1[len1],则将nums1[len1]移动到nums1[len3]的位置并使len3向前移动1即len1--;(1)如果nums2[len2]>nums1[len1],则将nums2[len2]移动到nums1[len3]的位置并使len2向前移动1即len2--;
leetcode-1-两数之和 3、如果target-nums[i]在hash_map的keys()中,则返回i及其hash_map[target-nums[i]];否则将该元素更新到哈希表,即hash_map[nums[i]]=i。1、初始化一个哈希表hash_map(一般用字典进行初始化),哈希表的key值代表nums中的元素,value代表该元素对应的索引;核心:在哈希表中查找key==target-nums[i]的索引(value)。2、遍历数组nums;
leetcode-63-不同陆路径II 如果obstacleGrid[i][j]==1,dp[i][j]=0。否则,当(i,j)位于第一行时,dp[i][j]=dp[i][j-1];当(i,j)位于第一列时,dp[i][j]=dp[i-1][j];当(i,j)在其他位置时,dp[i][j]=dp[i-1][j]+dp[i][j-1]。当grid[i][j]==1时,dp[i][j]==0;当(i,j)位于第一行时,dp[i][j]=dp[i][j-1]。当(i,j)位于第一列时,dp[i][j]=dp[i-1][j]。设置dp[0][0]=1。
leetcode-64-最小路径和 (5)走到grid[1][1]的最小距离:dp[1][1]=min(dp[0][1],dp[1][0])+grid[1][1];(6)走到grid[1][2]的最小距离:dp[1][2]=min(dp[0][2],dp[1][1])+grid[1][2];(8)走到grid[2][1]的最小距离:dp[2][1]=min(dp[2][0],dp[1][1])+grid[2][1];(2)走到grid[0][1]的最小距离:dp[0][1]=grid[0][0]+grid[0][1];
leetcode-75-颜色分类 3、遍历数组nums,首先将每个元素赋值为2,然后对该元素进行判断统计n0与n1的;本题核心计算0,1,2的个数并根据其长度依次对数组进行赋值。2、初始化变量n1,代表数组nums中0和1的个数;1、初始化变量n0,代表数组nums中0的个数;4、使用切片对数组进行赋值。
leetcode-71-简化路径 3、遍历数组names;如果当前元素为".."且栈不为空,则将弹出栈顶元素;如果当前元素不为空且不是".",则将元素入栈即stack.append()。4、将stack中的元素使用"/"进行拼接并返回。(用"/".join(stack)实现)备注:该题核心逻辑即当元素为".."时,删除该元素的前一个元素。2、初始化一个栈stack(python中的栈使用列表实现);1、以"/"作为分隔符对字符串进行分割得到数组names;
装饰器(Decorators)的实现 2、装饰器:不修改函数源码但是要实现给函数添加额外功能。python使用语法糖即@来实现装饰器。缓冲装饰器、权限验证装饰器、计时装饰器、日志装饰器、路由装饰器、异常处理装饰器、错误重试装饰器。1、Python 中的函数可以像普通变量一样当做参数传递给另外一个函数;(1)抽离出大量函数中与函数功能本身无关的雷同代码并继续使用。(2)为函数添加额外功能。6、装饰器的一般结构。