算法
Anut_hey
这个作者很懒,什么都没留下…
展开
-
跳跃游戏(二)
跳跃游戏(二)原创 2022-07-26 15:47:35 · 639 阅读 · 1 评论 -
python-递增的三元子序列
贪心算法原创 2022-07-12 10:05:15 · 2021 阅读 · 0 评论 -
python行星碰撞
第一次知道python中的else可以与if不在同一个缩进范围内leetcode-735原创 2022-06-23 23:31:05 · 244 阅读 · 0 评论 -
python含有所有字符的最短字符串
leetcode76题简单实现,非最优解原创 2022-06-01 00:11:30 · 1370 阅读 · 0 评论 -
python最接近的三数之和
给定列表nums,寻找a,b,c三数使a+b+c最接近targetleetcode 16题重点在于优化以避免重复class Solution: def threeSumClosest(self, nums: List[int], target: int) -> int: nums = sorted(nums) L = len(nums) minDiff = sum(nums[:3]) - target for i in ra原创 2022-04-27 21:25:28 · 743 阅读 · 0 评论 -
python岛屿数量
DFS的递归实现和迭代实现class Solution: def numIslands(self, grid: List[List[str]]) -> int: if grid==None or not len(grid): return 0 count = 0 for i in range(len(grid)): for j in range(len(grid[0])):原创 2021-11-09 23:00:33 · 651 阅读 · 0 评论 -
python最大子序和
迭代class Solution: def maxSubArray(self, nums: List[int]) -> int: L = len(nums) if L==1: return nums[0] maxval = nums[0] for i in range(L): temp = nums[i] #子序列从第i个数开始 if temp >ma原创 2021-10-06 18:39:20 · 366 阅读 · 0 评论 -
python买卖股票的最好时机(动态规划)
leetcode题目:动态规划直观做法:找极值点之差再比较class Solution: def maxProfit(self, prices: List[int]) -> int: L = len(prices) if L==1: return 0 min_price = prices[0] max_profit = 0 i=0 prices.append(0)原创 2021-10-05 23:37:50 · 433 阅读 · 0 评论 -
python动态规划之Fibobacci数列
1简单的递归:当前值f(n)=f(n-1)+f(n-2)Class Solution(): def Fibonacci(self,n): if(n<=2): return n return self.Fibonacci(n-1) + self.Fibonacci(n-2)每一层会发生两次递归。很多计算是重复的,效率低下,n值大就会导致超时2尾递归:尾部调用递归函数,且每一层只产生一次递归从n计数到1,n每次减1,f(n-2) = f(n-1) + f(n) = b + ac原创 2021-10-04 11:49:54 · 188 阅读 · 0 评论 -
python第一个为1的数
list=[0,0,0,0,1,1,1…]二分查找+递归# The isBadVersion API is already defined for you.# @param version, an integer# @return an integer# def isBadVersion(version):class Solution: def firstBadVersion(self, n): """ :type n: int :rty原创 2021-10-02 21:37:05 · 407 阅读 · 0 评论 -
python实现归并排序
递归法class Solution(): def merge_sort(self,nums): if len(nums)==1:#列表元素个数为1,无需排序直接返回 return nums if len(nums)==2: #sort列表元素个数为2,排序后返回 if nums[0]>nums[1]: return [nums[1],nums[0]] ret原创 2021-10-02 20:00:28 · 105 阅读 · 0 评论 -
python合并有序数组
(升序)有序数组1长度为m+n,含m个数,有序数组2 长度为n,含n个数。要求直接在数组1上完成合并方法:从两数组尾部开始比较,比较后大的值插入数组1尾部class Solution: def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None: """ Do not return anything, modify nums1 in-place instead.原创 2021-10-02 18:37:29 · 492 阅读 · 0 评论 -
python有序数组转换平衡二叉搜索树
递归,每次取有序数组中间的数创建当前节点,同时有序数组前半用于构建当前节点的左子树,后半用于构建当前节点的右子树# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass S原创 2021-09-30 19:54:58 · 220 阅读 · 0 评论 -
python对称二叉树
方法1:用层序遍历,一层层检测是否对称方法2:递归或BFS,对应节点逐个比较,每次比较完一对节点(left,right),新增两对需比较结点(left.left,right.right),(left.right,right.left),二叉树,倍增的思想递归# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# se原创 2021-09-30 18:42:46 · 358 阅读 · 0 评论 -
python求二叉树最大深度
三种方法,作记录用1递归:在每个节点选择最大的深度+1返回(左子树或右子树的深度)# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: d原创 2021-09-29 21:58:39 · 1774 阅读 · 0 评论 -
python链表翻转
**递归倒叙赋值**递归模板def recursion(node,Nlist): if(终止条件): return (值) #逻辑处理,可能没有 Nlist = recursion(node.next,Nlist) #递归调用 #逻辑处理,可能没有 return代码class Solution: def reverseList(self, head: ListNode) -> ListNode: if not head:原创 2021-09-28 10:34:09 · 105 阅读 · 0 评论 -
python删除单链表倒数第n个节点
python递归class Solution: def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode: pos = self.findpos(head,n) #计算head到结尾共有多少个节点 if pos == n: #需要删除头节点 return head.next return原创 2021-09-27 22:19:51 · 382 阅读 · 0 评论 -
求最长公共前缀
方法一,暴力破解class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: i = 0 for c in strs[0]: for s in strs[1:]: if i >= len(s) or s[i] != c: if i:原创 2021-09-27 16:38:51 · 91 阅读 · 0 评论 -
(外观数列)python递归
(外观数列)python##递归##在数字串末尾加个‘0’作为结束标志class Solution: def countAndSay(self, n: int) -> str: if n == 1: return '1' #最底层 cas = self.countAndSay(n-1) #递归 cas_new ='' #新串 i=0 j=1 cas += '0'原创 2021-09-26 23:37:58 · 94 阅读 · 0 评论 -
python实现KMP算法
**python3##实现KMP算法**class Solution: def strStr(self, haystack: str, needle: str) -> int: L1 = len(haystack) L2 = len(needle) if L2 == 0: return 0 elif L1 == 0: return -1 nextp = [0]原创 2021-09-26 16:27:46 · 154 阅读 · 0 评论