算法——读研难熬
文章平均质量分 56
力克算法练习
料理码王
什么都不会!
展开
-
【算法刷题】1 Python基础篇
第四次开始刷算法题了,第一次是为了考浙大,第二次是为了求职,第三次是为了毕业求职,第四次是为了工作。原创 2022-11-14 23:33:18 · 2315 阅读 · 2 评论 -
通俗解析KMP算法和next函数(小学生都能懂!!!!)
1 目标 搞任何算法前我们需要搞清楚目标,我们的目标是: 给定一个文本串和一个模式串,从文本串里面找第一次出现的模式串。 特别地,找不到就返回-1,模式串为空则返回。 例如:kmp(‘aadaadaaf’, ‘aadaaf’) = 3 2 概念 我们学习模式串匹配文本串之前,必须明确几个重要的概念: 文本串:一个长字符串,里面可能有模式串,如aadaadaaf。 模式串:一个比文本串短的字符串,它可能蕴含在文本串中,如aadaaf。 前缀:一个字符串的子串(去除最后一个字符)。如aad的前缀:a,原创 2021-09-05 18:25:31 · 580 阅读 · 0 评论 -
79. 单词搜索
题目 给定一个二维网格和一个单词,找出该单词是否存在于网格中。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。 示例: board = [ [‘A’,‘B’,‘C’,‘E’], [‘S’,‘F’,‘C’,‘S’], [‘A’,‘D’,‘E’,‘E’] ] 给定 word = “ABCCED”, 返回 true 给定 word = “SEE”, 返回 true 给定 word = “ABCB”, 返回 false原创 2020-09-14 10:08:08 · 148 阅读 · 0 评论 -
637. 二叉树的层平均值
题目 给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。 自练代码 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def averageOfLevels(self, root: Tre原创 2020-09-13 00:03:18 · 175 阅读 · 0 评论 -
216. 组合总和 III
题目 找出所有相加之和为 n 的 k 个数的组合。组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字。 说明: 所有数字都是正整数。 解集不能包含重复的组合。 示例 1: 输入: k = 3, n = 7 输出: [[1,2,4]] 代码 class Solution: def combinationSum3(self, k: int, n: int) -> List[List[int]]: candidates = [i for i in range(1,原创 2020-09-12 00:35:19 · 144 阅读 · 0 评论 -
7. 整数反转
题目 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321 代码 class Solution: def reverse(self, x: int) -> int: zheng = 1 if x < 0: zheng = 0 ans = 0-int((str(x)[1:])[::-1]) if ans < -2*原创 2020-09-12 00:24:29 · 96 阅读 · 0 评论 -
40. 组合总和 II
题目 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次。 说明: 所有数字(包括目标数)都是正整数。 解集不能包含重复的组合。 示例 1: 输入: candidates = [10,1,2,7,6,1,5], target = 8, 所求解集为: [ [1, 7], [1, 2, 5], [2, 6], [1, 1, 6] ] 自练代码 class Solut原创 2020-09-10 23:03:38 · 98 阅读 · 0 评论 -
39. 组合总和
题目 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明: 所有数字(包括 target)都是正整数。 解集不能包含重复的组合。 自练代码 class Solution: def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:原创 2020-09-10 00:07:21 · 100 阅读 · 0 评论 -
77. 组合(最易懂!!!看完此题理解回溯和递归!!!)
题目 给定一个数组n和一个整数k,利用n内的数找出所有的排列数组,规定每个数组内不能有相同的元素,并且数组内的元素个数为k。举例: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 讲解 首先,拿到这道题目,追根溯源,啥也没想,直接暴力是最好解决的,一开始我压根没去想什么回溯递归剪枝等等复杂的概念,那么我们开始暴力吧。。。。 步骤一: 1. 假设题目所给样例,n,k = 4, 2 那么我们有: nums =原创 2020-09-09 11:10:47 · 288 阅读 · 0 评论 -
1. 两数之和
题目 给定一个数组和一个目标数,找出数组中的两个数,使得两数之和为该目标数,返回两个数的下标,每个数只能用一次。答案存在且唯一。 自练 class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: s = [] for i, item in enumerate(nums): s.append((item, i)) s = sort原创 2020-09-07 23:42:07 · 130 阅读 · 0 评论 -
347. 前 K 个高频元素
题目 给定数组和k,求数组中出现频率最高的前k个元素,答案唯一。 自练代码 class Solution: def topKFrequent(self, nums: List[int], k: int) -> List[int]: rank = {} for i in nums: if i not in rank: rank[i] = 1 else:原创 2020-09-07 23:10:22 · 82 阅读 · 0 评论