
算法——读研难熬
文章平均质量分 56
力克算法练习
料理码王
什么都不会!
展开
-
【算法刷题】1 Python基础篇
第四次开始刷算法题了,第一次是为了考浙大,第二次是为了求职,第三次是为了毕业求职,第四次是为了工作。原创 2022-11-14 23:33:18 · 2379 阅读 · 2 评论 -
通俗解析KMP算法和next函数(小学生都能懂!!!!)
1 目标搞任何算法前我们需要搞清楚目标,我们的目标是:给定一个文本串和一个模式串,从文本串里面找第一次出现的模式串。特别地,找不到就返回-1,模式串为空则返回。例如:kmp(‘aadaadaaf’, ‘aadaaf’) = 32 概念我们学习模式串匹配文本串之前,必须明确几个重要的概念:文本串:一个长字符串,里面可能有模式串,如aadaadaaf。模式串:一个比文本串短的字符串,它可能蕴含在文本串中,如aadaaf。前缀:一个字符串的子串(去除最后一个字符)。如aad的前缀:a,原创 2021-09-05 18:25:31 · 647 阅读 · 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 · 166 阅读 · 0 评论 -
637. 二叉树的层平均值
题目给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。自练代码# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def averageOfLevels(self, root: Tre原创 2020-09-13 00:03:18 · 197 阅读 · 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 · 161 阅读 · 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 · 112 阅读 · 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 · 116 阅读 · 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 · 121 阅读 · 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 · 330 阅读 · 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 · 149 阅读 · 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 · 101 阅读 · 0 评论