- 大部分动态规划能解决的问题,都可以通过回溯算法来解决,只不过回溯算法解决起来效率比较低,时间复杂度是指数级的。动态规划算法,在执行效率方面,要高很多。 大部分动态规划能解决的问题,都可以通过回溯算法来解决,只不过回溯算法解决起来效率比较低,时间复杂度是指数级的。动态规划算法,在执行效率方面,要高很多。
- 归并排序和快速排序是两种稍微复杂的排序算法,它们用的都是分治的思想,代码都通过递归来实现,过程非常相似。理解归并排序的重点是理解递推公式和 merge() 合并函数。 归并排序和快速排序是两种稍微复杂的排序算法,它们用的都是分治的思想,代码都通过递归来实现,过程非常相似。理解归并排序的重点是理解递推公式和 merge() 合并函数。
- 分享常见的数据结构包括:数组、链表、栈和队列等,以及常见的算法:排序、分治、回溯、递归、贪心、动态规划等。 分享常见的数据结构包括:数组、链表、栈和队列等,以及常见的算法:排序、分治、回溯、递归、贪心、动态规划等。
- 一.树之习题选讲-Tree Traversals Again树习题-TTA.1 题意理解非递归中序遍历的过程 1. Push的顺序为先序遍历(pre) 2. Pop的顺序给出中序遍历(in) 树习题-TTA.2 核心算法上图分别是先序、中序、后序遍历通过规律我们可以看到他们之间的位置分配//伪代码void solve(int preL,int inL,int n){if(n == 0) re... 一.树之习题选讲-Tree Traversals Again树习题-TTA.1 题意理解非递归中序遍历的过程 1. Push的顺序为先序遍历(pre) 2. Pop的顺序给出中序遍历(in) 树习题-TTA.2 核心算法上图分别是先序、中序、后序遍历通过规律我们可以看到他们之间的位置分配//伪代码void solve(int preL,int inL,int n){if(n == 0) re...
- 344. 反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。思路一:从中间开始向两边遍历,然后两边交换位置,最终获得字符串的反转//class Solution { public void reverseString(char[] s) { int len = s.length,size = len; for(in... 344. 反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。思路一:从中间开始向两边遍历,然后两边交换位置,最终获得字符串的反转//class Solution { public void reverseString(char[] s) { int len = s.length,size = len; for(in...
- 6.2 图的遍历 6.2.1 图的遍历——DFS 遍历:把图里面每个顶点都访问一遍而且不能有重复的访问 深度优先搜索(DFS) 当访问完了一个节点所有的灯后,一定原路返回对应着堆栈的出栈入栈的一个行为 深度优先搜索的算法描述void DFS(Vertex V)//从迷宫的节点出来{visited[V] = true;//给每个节点一个变量,true相当于灯亮了,false则是熄灭状态for(... 6.2 图的遍历 6.2.1 图的遍历——DFS 遍历:把图里面每个顶点都访问一遍而且不能有重复的访问 深度优先搜索(DFS) 当访问完了一个节点所有的灯后,一定原路返回对应着堆栈的出栈入栈的一个行为 深度优先搜索的算法描述void DFS(Vertex V)//从迷宫的节点出来{visited[V] = true;//给每个节点一个变量,true相当于灯亮了,false则是熄灭状态for(...
- 数组删除有序数组中的重复项给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。将最终结果插入 nums 的前 k... 数组删除有序数组中的重复项给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。将最终结果插入 nums 的前 k...
- 文章和代码已经归档至【Github仓库:algorithms-notes】或者公众号【AIShareLab】回复 算法笔记 也可获取。首先,计算机中常用的数据结构是栈和队列。栈:先进后出,通常应用是递归,DFS。队列:先进先出,通常应用是 BFS 。过程如下所示:每次取出队头元素,并且把其拓展的元素放在队尾。上面过程可知,遍历的过程以及入队的过程都是按照BFS(1 2 3…10)的顺序进行的... 文章和代码已经归档至【Github仓库:algorithms-notes】或者公众号【AIShareLab】回复 算法笔记 也可获取。首先,计算机中常用的数据结构是栈和队列。栈:先进后出,通常应用是递归,DFS。队列:先进先出,通常应用是 BFS 。过程如下所示:每次取出队头元素,并且把其拓展的元素放在队尾。上面过程可知,遍历的过程以及入队的过程都是按照BFS(1 2 3…10)的顺序进行的...
- 文章和代码已经归档至【Github仓库:algorithms-notes】或者公众号【AIShareLab】回复 算法笔记 也可获取。应用:求区间最大值,求染色面积,长度,最大连续和等等。 思想操作一:单点修改 (O(logn)O(logn)O(logn))单点修改的基础思想就是仅修改信息需要变化的节点,类似一个递归 + 回溯的过程。操作二:区间查询 (O(logn)O(logn)O(log... 文章和代码已经归档至【Github仓库:algorithms-notes】或者公众号【AIShareLab】回复 算法笔记 也可获取。应用:求区间最大值,求染色面积,长度,最大连续和等等。 思想操作一:单点修改 (O(logn)O(logn)O(logn))单点修改的基础思想就是仅修改信息需要变化的节点,类似一个递归 + 回溯的过程。操作二:区间查询 (O(logn)O(logn)O(log...
- 第一章 DFS 一、排列数字 1. 题目描述给定一个整数 n,将数字 1∼n1∼n1∼n 排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。输入格式共一行,包含一个整数 n。输出格式按字典序输出所有排列方案,每个方案占一行。数据范围1≤n≤71≤n≤71≤n≤7输入样例:3输出样例:1 2 31 3 22 1 32 3 13 1 23 2 1 2. 思路分析算法流程... 第一章 DFS 一、排列数字 1. 题目描述给定一个整数 n,将数字 1∼n1∼n1∼n 排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。输入格式共一行,包含一个整数 n。输出格式按字典序输出所有排列方案,每个方案占一行。数据范围1≤n≤71≤n≤71≤n≤7输入样例:3输出样例:1 2 31 3 22 1 32 3 13 1 23 2 1 2. 思路分析算法流程...
- 第一章 KMP 一、KMP字符串 1. 题目描述给定一个字符串 SSS,以及一个模式串 PPP,所有字符串中只包含大小写英文字母以及阿拉伯数字。模式串 PPP 在字符串 SSS 中多次作为子串出现。求出模式串 PPP 在字符串 SSS 中所有出现的位置的起始下标。输入格式第一行输入整数 NNN,表示字符串 PPP 的长度。第二行输入字符串 PPP。第三行输入整数 MMM,表示字符串 SSS... 第一章 KMP 一、KMP字符串 1. 题目描述给定一个字符串 SSS,以及一个模式串 PPP,所有字符串中只包含大小写英文字母以及阿拉伯数字。模式串 PPP 在字符串 SSS 中多次作为子串出现。求出模式串 PPP 在字符串 SSS 中所有出现的位置的起始下标。输入格式第一行输入整数 NNN,表示字符串 PPP 的长度。第二行输入字符串 PPP。第三行输入整数 MMM,表示字符串 SSS...
- 第一章 单链表 一、单链表 1. 题目描述实现一个单链表,链表初始为空,支持三种操作:向链表头插入一个数;删除第 kkk 个插入的数后面的数;在第 kkk 个插入的数后插入一个数。现在要对该链表进行 MMM 次操作,进行完所有操作后,从头到尾输出整个链表。注意:题目中第kkk 个插入的数并不是指当前链表的第 kkk 个数。例如操作过程中一共插入了 nnn 个数,则按照插入的时间顺序,这 n... 第一章 单链表 一、单链表 1. 题目描述实现一个单链表,链表初始为空,支持三种操作:向链表头插入一个数;删除第 kkk 个插入的数后面的数;在第 kkk 个插入的数后插入一个数。现在要对该链表进行 MMM 次操作,进行完所有操作后,从头到尾输出整个链表。注意:题目中第kkk 个插入的数并不是指当前链表的第 kkk 个数。例如操作过程中一共插入了 nnn 个数,则按照插入的时间顺序,这 n...
- 文章和代码已经归档至【Github仓库:algorithms-notes】或者公众号【AIShareLab】回复 算法笔记 也可获取。 树状数组注意:树状数组的坐标一定要从1开始!树状数组的应用主要是:快速(在O(logn)的复杂度内):在某个位置上加上一个数(单点修改)求某一个的前缀和(区间查询)其他的变式都是由这两个基本功能转换而来,例如单点查询,区间修改等等。它与纯前缀和的区别在于可以... 文章和代码已经归档至【Github仓库:algorithms-notes】或者公众号【AIShareLab】回复 算法笔记 也可获取。 树状数组注意:树状数组的坐标一定要从1开始!树状数组的应用主要是:快速(在O(logn)的复杂度内):在某个位置上加上一个数(单点修改)求某一个的前缀和(区间查询)其他的变式都是由这两个基本功能转换而来,例如单点查询,区间修改等等。它与纯前缀和的区别在于可以...
- > 我们将字符串操作分为下面6种: > > 1. 基本操作方法 > 2. 字符串判空、比较 > 3. 字符串截取和拆分 > 4. 字符串查找和替换 > 5. 字符串和其他类型数据的转换 > 6. 字符串拼接和格式化 > 我们将字符串操作分为下面6种: > > 1. 基本操作方法 > 2. 字符串判空、比较 > 3. 字符串截取和拆分 > 4. 字符串查找和替换 > 5. 字符串和其他类型数据的转换 > 6. 字符串拼接和格式化
- 基数排序1.基本介绍基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sor)或bin sort,顾名思义,它是通过键值的各个位的值,将安排序的元素分配至某些“桶”中,达到排序的作用基数排序法是属于稳定性的排序,基数排序法的是效率高的稳定性排序法基数排序(Radix Sort)是桶排序的扩展基数排序是1887年赫尔曼何乐礼... 基数排序1.基本介绍基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sor)或bin sort,顾名思义,它是通过键值的各个位的值,将安排序的元素分配至某些“桶”中,达到排序的作用基数排序法是属于稳定性的排序,基数排序法的是效率高的稳定性排序法基数排序(Radix Sort)是桶排序的扩展基数排序是1887年赫尔曼何乐礼...
上滑加载中
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢
2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考
2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本
2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签