- 博客(36)
- 收藏
- 关注
原创 强化学习。
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2022-03-23 20:33:19
464
原创 算法-动态规划
31.最长递增子序列给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。class Solution: def lengthOfLIS(self, nums) -> int: if len(nums) <= 1: return len(nums) dp
2022-03-19 20:21:52
150
原创 算法-动态规划
21.多重背包有N种物品和一个容量为V 的背包。第i种物品最多有Mi件可用,每件耗费的空间是Ci ,价值是Wi 。求解将哪些物品装入背包可使这些物品的耗费的空间 总和不超过背包容量,且价值总和最大。class Solution: def test_multi_pack(self,bag_weight, weight, nums, value): dp = [0] * (bag_weight + 1) for i in range(len(weight)):
2022-03-19 15:07:55
155
原创 算法-动态规划
11.最后一块石头的重量 II有一堆石头,每块石头的重量都是正整数。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎; 如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。 最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头剩下,就返回 0。class Solution: def lastSto
2022-03-18 16:37:08
126
原创 算法-动态规划
1.斐波那契数斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1 给你n ,请计算 F(n) 。class Solution: def fib(self, n: int) -> int: if n < 2: return n
2022-03-17 21:03:27
113
原创 算法-贪心
7.K次取反后最大化的数组和给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次。(我们可以多次选择同一个索引 i。)以这种方式修改数组后,返回数组可能的最大和。class Solution: def largestSumAfterKNegations(self, nums, k): nums = sorted(nums, key=abs, reverse=True)
2022-03-16 20:35:03
475
原创 算法-贪心
1.分发饼干假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。class Solution: def findContentChildren(self, g, s):
2022-03-15 21:09:13
85
原创 算法-回溯
9.子集II给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。class Solution: def __init__(self): self.path = [] self.paths = [] def subsetWithDup(self,nums): self.path.clear() self.paths.clear() nums.
2022-03-15 18:49:54
97
原创 算法-回溯
1.组合给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。class Solution: def combine(self,n,k): res = []#存放符合条件结果的集合 path = []#用来存放符合条件结果 def backtrack(n,k,startIndex): if len(path) == k: res.append(path[:])
2022-03-13 16:17:37
190
原创 算法-二叉树
20.验证二叉搜索树给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 #递归法1class Solution: def isValidBST(self,root:TreeNode): tmp = [] def traverse(root:TreeNode): if not
2022-03-11 18:11:54
75
原创 算法-二叉树
8.完全二叉树的节点个数class TreeNode: def __init__(self,val): self.val = val self.left = None self.right = Noneimport collections#普通二叉树递归法class Solution: def countNodes(self,root:TreeNode): if not root: retur
2022-03-10 20:40:52
86
原创 算法-二叉树
1.二叉树的递归遍历# 前序遍历-递归-LC144_二叉树的前序遍历class Solution: def preorderTraversal(self, root: TreeNode) -> List[int]: # 保存结果 result = [] def traversal(root: TreeNode): if root == None: return
2022-03-09 19:35:43
313
原创 算法-栈与队列
1.用栈实现队列使用栈实现队列的下列操作:push(x) -- 将一个元素放入队列的尾部。pop() -- 从队列首部移除元素。peek() -- 返回队列首部的元素。empty() -- 返回队列是否为空。class Solution: def __init__(self): self.s1 = [] self.s2 = [] def push(self,x): self.s1.append(x) def po
2022-03-09 15:40:12
238
原创 算法-双指针法
1.移除元素给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 $O(1)$ 额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。class Solution: def removeElement(self,nums,val): fast = slow = 0 while fast < len(nums):
2022-03-08 21:41:57
205
原创 算法-字符串
1.反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 $O(1)$ 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。class Solution: def reverseString(self,s): n = len(s) left = 0 right = n - 1
2022-03-08 20:04:08
465
原创 算法-哈希表
1.有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1: 输入: s = "anagram", t = "nagaram" 输出: true示例 2: 输入: s = "rat", t = "car" 输出: falseclass Solution: def isAnagram(self,s:str,t:str) -> bool: res = [0] * 26 if len(s) != le
2022-03-08 14:40:01
97
原创 算法-链表
1.移除链表元素删除链表中等于给定值 val 的所有节点。class Solution: def removeElements(self,head,val): dummy_head = ListNode(next=head) cur = dummy_head while cur.next: if cur.next.val == val: cur.next = cur.next.next
2022-03-07 21:01:02
342
原创 算法-数组
1.二分查找:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。class Solution: def search(self, nums, target): left, right = 0, len(nums) - 1 while left <= right: middle = (left
2022-03-07 16:21:20
223
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人