摘要:1. 题目 读题 https://leetcode.cn/problems/generate-parentheses/ 这道题的题目描述是这样的: 给定一个整数n,表示括号对的数量,写一个函数来生成所有可能的有效括号组合。¹ 有效括号组合的意思是,每个左括号都有一个对应的右括号,并且括号之间的嵌套关
阅读全文
lotus贵有恒何必三更眠五更起 最无益只怕一日曝十日寒 |
|
随笔分类 - 数据结构与算法
摘要:1. 题目 读题 https://leetcode.cn/problems/generate-parentheses/ 这道题的题目描述是这样的: 给定一个整数n,表示括号对的数量,写一个函数来生成所有可能的有效括号组合。¹ 有效括号组合的意思是,每个左括号都有一个对应的右括号,并且括号之间的嵌套关
阅读全文
摘要:1. 题目 https://leetcode.cn/problems/basic-calculator/ 2. 解法 解题思路: 使用两个栈,一个存储数字,一个存储运算符 遍历字符串,如果遇到数字,就将其转换为整数并压入数字栈 如果遇到运算符,就比较其与运算符栈顶的优先级,如果高于或等于栈顶的优先级
阅读全文
摘要:一、基本概念 字符串匹配是计算机科学领域中最古老、研究最广泛的问题之一,层出不穷的前辈们也总结了非常多经典的优秀算法,例如 BF 算法、RK 算法、BM 算法、KMP 算法,今天我介绍的主角是 BM 算法。 字符串匹配可以简单概括为前缀匹配,后缀匹配,子串匹配,下面的讲解我都以最常见的子串匹配为例。
阅读全文
摘要:BF算法,即暴力(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算
阅读全文
摘要:/** * rk字符串匹配算法,主要引入了hash的概念, * 利用子串的hash值依次对比主串相应长度的子串hash值 * 并对hash值相同的子串进行匹配对比 */ public class RKSearch { /** * rk算法入口 * @param t 主字符串 * @param p 子
阅读全文
摘要:https://zhuanlan.zhihu.com/p/431240843 1 递归算法 1.1 算法策略 1.2 适用场景 1.3 使用递归算法求解的一些经典问题 DOM树为例 2 分治算法 2.1 算法策略 2.2 适用场景 2.3 使用分治法求解的一些经典问题二分查找 3 贪心算法 3.1
阅读全文
摘要:贪心算法的产生背景是什么?它主要解决的是哪一类的问题?这些问题可以总结成一个固定的什么样的模型? 产生背景没了解过,但是我以前学建模的时候是这样理解的: 贪心算法是一种思路,而非固定的操作方法;贪心算法叫短视算法更贴切,因为它只考虑当前最佳的解决方法。至于它能解决哪类问题,我认为使用它并不一定能“解
阅读全文
摘要:每次做选择的时候都做出当下最好的选择,而不考虑将来的后果。并且期望最终得到的结果是全局最优的。 ——贪心算法 - Greedy Algorithm 什么时候该使用贪心算法 针对一组数据,定义了限制值。现在需要我们从中选出几个数据,在满足限制值的情况下,使期望值最大。 这个不难理解,比如知乎上这个很火
阅读全文
摘要:前言 在上一篇文章动态规划的文章中,我们先由 Fibonacci 例子引入到了动态规划中,然后借助兑换零钱的例子,分析了动态规划最主要的三个性质,即: 重叠子问题 最优子结构 状态转移方程 但是动态规划远不止这么简单。 今天这篇文章,让我们深入动态规划,一窥动态规划的本质。 我们既然要彻底搞清楚动态
阅读全文
摘要:前言 我们刷leetcode的时候,经常会遇到动态规划类型题目。动态规划问题非常非常经典,也很有技巧性,一般大厂都非常喜欢问。今天跟大家一起来学习动态规划的套路,文章如果有不正确的地方,欢迎大家指出哈,感谢感谢~ 什么是动态规划? 动态规划的核心思想 一个例子走进动态规划 动态规划的解题套路 lee
阅读全文
摘要:一、动态规划三板斧 状态转移公式 循环 或 递归 性能优化 二、WHY 1、状态转移公式 动态规划与分治不一样,分治的问题是相互独立的,而动态规划的各个状态是有关联关系的。比如背包问题,你选择了 i 物品之后,背包的剩余容量要发生变化吧,对装别的物品就有影响了。 状态转移公式就是刻画这种关联的,一旦
阅读全文
摘要:链接:https://www.zhihu.com/question/23995189/answer/1094101149 对于动态规划,春招秋招时好多题都会用到动态规划,一气之下,再 leetcode 连续刷了几十道题 之后,豁然开朗 ,感觉动态规划也不是很难,今天,我就来跟大家讲一讲,我是怎么做动
阅读全文
摘要:链接:https://www.zhihu.com/question/23995189/answer/613096905来源:知乎 0. intro 很有意思的问题。以往见过许多教材,对动态规划(DP)的引入属于“奉天承运,皇帝诏曰”式:不给出一点引入,见面即拿出一大堆公式吓人;学生则死啃书本,然后突
阅读全文
摘要:我们之前说了二叉树基础及二叉的几种遍历方式及练习题 本文大纲 前序遍历 前序遍历的顺序是, 对于树中的某节点,先遍历该节点,然后再遍历其左子树,最后遍历其右子树. 我们先来通过下面这个动画复习一下二叉树的前序遍历。 迭代 我们试想一下,之前我们借助队列帮我们实现二叉树的层序遍历, 那么可不可以,也借
阅读全文
摘要:学算法的时候,递归确实是最绕的,这个东西怎么说呢,思路比较反自然思维.... 为啥说它反思维呢:自己调自己,而因为你在调用自己的时候只用了一个Fn-1,但事实上这个Fn-1代表了超级多个Fn-2Fn-3......,这是最让人思维感到难受的地方,但是用久了发现:真香 你只需要明白一个思想,就是面对一
阅读全文
摘要:作者:老刘链接:https://www.zhihu.com/question/31412436/answer/724915708 一. 引子 大师 L. Peter Deutsch 说过:To Iterate is Human, to Recurse, Divine.中文译为:人理解迭代,神理解递归
阅读全文
摘要:很多同学为什么学习递归 一看就会,一写就废! 这次我们要好好谈一谈递归,为什么很多同学看递归算法都是“一看就会,一写就废”。 主要是对递归不成体系,没有方法论,每次写递归算法 ,都是靠玄学来写代码,代码能不能编过都靠运气。 本篇将介绍前后中序的递归写法,一些同学可能会感觉很简单,其实不然,我们要通过
阅读全文
摘要:前言 递归是算法中一种非常重要的思想,应用也很广,小到阶乘,再在工作中用到的比如统计文件夹大小,大到 Google 的 PageRank 算法都能看到,也是面试官很喜欢的考点 最近看了不少递归的文章,收获不小,不过我发现大部分网上的讲递归的文章都不太全面,主要的问题在于解题后大部分都没有给出相应的时
阅读全文
摘要:不是每个程序员天生对递归理解深刻,刚入大一时候,当别人写出第一个求最大公约数的递归函数时,对其多么的惊叹,竟然可以不用循环,竟然代码可以这么简洁,确实递归在大多数情况下实现时候代码很短,大部分人也知道递归,也能基本看懂递归,可是却经常不知道怎么写,或者写出来的递归经常死循环,写算法往往也是学的是套路
阅读全文
|