- 大部分动态规划能解决的问题,都可以通过回溯算法来解决,只不过回溯算法解决起来效率比较低,时间复杂度是指数级的。动态规划算法,在执行效率方面,要高很多。 大部分动态规划能解决的问题,都可以通过回溯算法来解决,只不过回溯算法解决起来效率比较低,时间复杂度是指数级的。动态规划算法,在执行效率方面,要高很多。
- 归并排序和快速排序是两种稍微复杂的排序算法,它们用的都是分治的思想,代码都通过递归来实现,过程非常相似。理解归并排序的重点是理解递推公式和 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年赫尔曼何乐礼...
上滑加载中
推荐直播
-
华为云码道-AI时代应用开发利器2026/03/18 周三 19:00-20:00
童得力,华为云开发者生态运营总监/姚圣伟,华为云HCDE开发者专家
本次直播由华为专家带你实战应用开发,看华为云码道(CodeArts)代码智能体如何在AI时代让你的创意应用快速落地。更有华为云HCDE开发者专家带你用码道玩转JiuwenClaw,让小艺成为你的AI助理。
回顾中 -
Skill 构建 × 智能创作:基于华为云码道的 AI 内容生产提效方案2026/03/25 周三 19:00-20:00
余伟,华为云软件研发工程师/万邵业(万少),华为云HCDE开发者专家
本次直播带来两大实战:华为云码道 Skill-Creator 手把手搭建专属知识库 Skill;如何用码道提效 OpenClaw 小说文本,打造从大纲到成稿的 AI 原创小说全链路。技术干货 + OPC创作思路,一次讲透!
回顾中 -
华为云一键云上部署Openclaw 实现“龙虾自由”2026/04/11 周六 14:00-16:00
秦拳德-中软国际教育卓越研究院研究员
还在为搭建AI环境而焦头烂额、彻夜难眠? 还在苦苦等待复杂工具的缓慢响应、迟迟无法推进项目? 别再犹豫,快来华为云,一键部署OpenClaw,轻松告别 繁琐配置,即刻畅享极速体验!更有龙虾实操演示全程护 航,真正解放双手,让办公效率实现质的飞跃。限时重磅 福利火热来袭,干万Tokens等你来瓜分,机会难得,不容 错过!
即将直播
热门标签