- 博客(15)
- 收藏
- 关注
原创 算法学习-回溯
回溯法简述:回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。(from:百度百科)实现方法:递归与递推(迭代)递归递归递推...
2021-09-13 17:41:13
400
原创 分治法
算法-分治法分治法:将一个难以直接求解的大问题,分成若干个规模较小的子问题。递归的解决这些子问题,然后合并子问题的解,即为原问题的解。其中要求子问题相互独立,并且是与原问题的形式是一样的。例题1:多数元素给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入:[3,2,3]输出:3示例 2:输入:[2,2,1,1,1,2,2]输出:2来源:力扣(LeetCode)
2021-05-08 20:22:44
262
原创 动态规划与例题
算法-动态规划动态规划法是由美国数学家R.E.Bellman等人在研究多阶段决策过程的优化问题,提出了最优性原理,同时把多阶问题转换为多个单阶段问题,利用单阶段问题之间的关系,逐渐求解的方法。动态规划法适用于满足最优性原理和重叠子问题的问题。其中最优性原理指的是该问题的最优解也包含子问题的最优解;重叠子问题指的是可以将原问题分解成若干个有关系的子问题。例题:最大子序和给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 :输入:nums =
2021-05-07 19:12:15
447
原创 算法题-二叉树的中序遍历
C++解二叉树的中序遍历原题:给定一个二叉树的根节点 root ,返回它的 中序 遍历。示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[2,1]示例 5:输入:root = [1,null,2]输出:[1,2]提示:树中节点数目在范围 [0, 100] 内-100 <= Node.val <
2021-04-03 10:50:14
620
原创 算法题-旋转图像
C++解旋转图像原题:给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[7,4,1],[8,5,2],[9,6,3]]示例 2:输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]输出:[
2021-04-02 10:30:34
216
原创 算法题-三数之和
C++解三数之和原题:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]提示:0 <= nums.length <= 3
2021-03-31 10:50:28
284
原创 算法题-颜色分类
C++解颜色分类原题:给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。示例 1:输入:nums = [2,0,2,1,1,0]输出:[0,0,1,1,2,2]示例 2:输入:nums = [2,0,1]输出:[0,1,2]示例 3:输入:nums = [0]输出:[0]示例 4:输入:nums = [1]输出:[1]提示:n =
2021-03-27 12:53:05
524
1
原创 算法题-盛最多水的容器
C++解盛最多水的容器原题:给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示
2021-03-24 15:57:05
205
原创 算法题-组合总和
C++解组合总和原题:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[ [7],[2,2,3]]示例 2:输入:candidates = [2,3,5], target
2021-03-23 14:20:09
282
原创 算法题-矩阵置0
C++解矩阵置0原题:给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。进阶:一个直观的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。一个简单的改进方案是使用 O(m + n) 的额外空间,但这仍然不是最好的解决方案。你能想出一个仅使用常量空间的解决方案吗?示例 1:输入:matrix = [[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2
2021-03-21 16:07:19
409
原创 算法题-电话号码的字母组合
C++解电话号码的字母组合原题:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits = “23”输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]示例 2:输入:digits = “”输出:[]示例 3:输入:digits = “2”输出:[“a”,“b”,“c”]提示:0 <= dig
2021-03-19 19:44:18
267
原创 算法题-罗马数字转整数
C++罗马数字转整数罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V
2021-03-10 09:13:29
166
原创 算法题-回文数
C++解回文数给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121输出:true示例 2:输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入:x = 10输出:false解释:从右向左读, 为 01 。因此它不是一个回文数。
2021-03-08 10:42:23
279
1
原创 share:前端可以用到的一些网站
分享一些学习前端可以用到的网站1.墨刀:https://modao.cc这是一个可以绘制原型图、设计图、流程图等的网站,也是可以和团队一起协作的。操作起来还是挺容易的。2.Element:https://element.eleme.cn/#/zh-CN一个写前端可以用到的免费组件,安装流程和使用都是很简单的,官网就有详细的介绍。国内著名的RuoYi框架就用了Element来写前端。3.Vant:https://vant-contrib.gitee.io/vant/#/zh-CN/calendar
2021-03-03 09:10:19
490
原创 编译原理实验:基于DFA的单词识别
**词法分析:基于DFA的单词识别实验内容:【问题描述】基于DFA的单词识别问题的一种描述是:编写一个程序,输入一个确定的有穷自动机(DFA),使用该DFA识别单词。【基本要求】设置DFA初始状态X,终态Y,过程态用数字表示:0 1 2 3………【输入形式】标准输入【输出形式】标准输出【样例输入】a b#X Y 0 2#X X-a->0 X-b->XY Y-a->0 Y-b->X0 0-a->0 0-b->22 2-a->0 2-b
2020-12-03 10:52:47
3255
10
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅