- 博客(36)
- 收藏
- 关注
原创 c++实现常见排序算法
希尔排序:使用gap = N /2,将相邻gap的元素进行比较和交换,之后不断缩小gap,gap = 1时停止;插入排序:将当前元素插入到当前元素之前的所有元素的最后一个大于/小于的位置,其他位置元素依次向后移动;快速排序:使用povit元素作为基准,将小的元素放在基准左边,大于的元素放入基准右边;选择排序:对于每个位置,选择剩余元素最小/最大的元素;冒泡排序:依次比较相邻数据并根据排序规则交换;归并排序:递归思想,借助新的数组;
2024-01-27 14:45:06 374
原创 算法通关村第十三关-7进制数转换
2、如果数据是负数,将其符号保存,取绝对值转换为7进制数;(1)将当前数据与7取余,将余数转换为字符保存到字符串中;4、如果是负数,将负号的字符添加到字符串结尾;1、如果输入数据为0,返回字符串“0”;(3)循环1,2直到当前数据为0;5、将字符串反转即为所求结果;(2)将当前数据除以7;
2024-01-10 01:45:00 446
原创 算法通关村第十二关-求字符串数组的最长公共前缀和字符串压缩
思路:从第一个字符串的第一个字符开始,纵向比较每个字符串相同位置的字符是否相同,当且仅当所有字符串的该位置的字符相同时,继续比较下一个字符,直到某个字符串到达结尾或者某个字符对应位置处的字符不相同,返回第一个字符遍历到的位置之前的字符串作为最终结果。
2024-01-10 00:53:34 336
原创 算法通关村第十二关-字符串基础题目
思路:每2k个一组,将其前k个字符反转,使用i+k与字符串长度n判断剩余字符串长度属于(0,k)还是 [k,2k)之间;3、判断左右指针指向的字符是否相等,如果相等,移动指针继续判断;1、将字符串中字母和数字取出组成待判断的字符串,由于不区分大小写,因此将遇到的字母全部转换为大写/小写;思路:遍历字符串,将第i个字符和第N-i-1个字符串交换即可;5、循环1,2,3 步骤,直到左指针大于等于右指针;1、定义左右指针分别指向字符串字符串的头部和尾部;2、定义左右指针分别指向字符串字符串的头部和尾部;
2024-01-07 20:47:50 517
原创 算法通关村第十二关-实现函数stoi将字符串转换为整数
3、获取连续的表示数字的字符,将其转换为整数,【要对当前整数做溢出判断】,直到遇到不是数字的字符停止转换将结果输出;2、如果包含符号’+‘/’-‘字符,输出的整数为对应的正负值,如果不包含则默认为正数;1、去掉字符串的前置空格;
2024-01-05 00:22:48 443
原创 算法通关村第十一关--实现无符号二进制数的反转
思路:反转时从最低位开始取每一位,将其左移至颠倒后对应的位置并与新二进制串的值相加,例如32位二进制数的最低位反转后对应新二进制串的第一位,次低位对应第二位等等依次类推;
2024-01-04 22:55:50 306
原创 算法通关村第十一关--位运算基础知识
5、<< 左移运算:将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0);6、>> 右移运算:将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。2、| 按位或运算符,按二进制位进行"或"运算。3、^ 异或运算符,按二进制位进行"异或"运算。4、~ 取反运算符,按二进制位进行"取反"运算。1、& 按位与操作,按二进制位进行"与"运算。
2024-01-03 17:58:40 320
原创 算法通关村第九关-理解二分法在二叉树中的应用
思路:平衡二叉树要求树的每个节点的左右子树的高度差的绝对值小于等于1,因此使用二分法每次将数组最中间树作为根节点;根节点左边的数组元素作为左子树的所有节点,根节点右边的元素作为右子树的所有节点,使用递归法构造二叉搜索树;遍历二叉树找到插入节点的位置,使用递归遍历和迭代遍历实现;
2023-12-22 19:48:35 355
原创 【算法通关村第九关-二分查找在验证二叉搜索树中的应用】
二叉搜索树的定义:节点的左子树只包含小于当前节点的树,节点的右子树大于当前节点的树;所有的左子树右子树自身也是二叉搜索树。
2023-12-22 17:53:36 419
原创 算法通关村第九关-透彻理解二分查找
1、二分查找是分治思想最简单和典型的应用,二分法适用于数组已排序无重复且只查找其中一个元素的场景;二分法实现过程中最重要的是循环条件的确定和迭代区间的赋值;3、数组长度对二分法查找的影响不大,二分法实现过程中最重要的是循环条件的确定和迭代区间的赋值;如果中间的数字大于目标值,则中间数字向右的所有数字都大于目标值,全部排除。如果中间的数字小于目标值,则中间数字向左的所有数字都小于目标值,全部排除。如果相等:直接返回答案。
2023-12-17 21:51:58 48
原创 算法通关村第八关-求二叉树根节点到叶子节点的所有路径
思路:递归遍历每一个节点,访问到的节点值保存到当前路径中,直到访问到叶子节点,将当前路径保存到总路径,回溯到上一个节点,继续访问节点,直到所有叶子节点都访问完毕;
2023-12-15 20:39:06 53
原创 算法通关村第六关-通过序列复原二叉树
通过中序遍历和后序遍历复原二叉树后序遍历最后一位尾根节点;中序遍历序列找到根节点,将序列分为左右子树的序列两部分;分别在后序遍历序列的左右两部分找到根节点,在中序遍历的左右两部分中找到左右子树的左右子树,依次类推;
2023-12-11 00:56:48 28
原创 算法通关村第五关-LRU和LFU缓存机制的实现
使用hsah+平衡二叉树实现,由于c++中的set底层是使用平衡二叉树实现的,因此使用set存储元素,最久未使用的元素会在set内部自动移动到set的begin()位置。由于set存储的元素是自定义的,因此需要重载比较符。使用hash表+双向链表实现,hash表用于使用o(1)时间复杂度访问某个元素的value值,元素的key,value值存储在双向链表中。
2023-12-10 20:23:41 358
原创 算法通关村第四关-白银挑战
功能:实现一个栈,实现函数push(),pop(),top(),以及getMin,getMax(),其中getMin,getMax()可以获取到当前栈元素的最小值和最大值;
2023-12-06 23:10:22 41
原创 算法通关村第三关-青铜挑战
添加元素:从待添加元素位置处开始,将剩余元素依次向后移动一个位置,注意使用for循环遍历时下标从后往前;将添加位置处的元素改为待添加的元素的值;头插和中间插代码相同,尾部插入不需要移动元素,直接在末尾元素的下个位置插入即可。删除元素:先遍历数组找到待删除元素的下标,从该下标开始,将剩余元素依次向前移动一个位置,for循环从前往后操作元素;
2023-12-04 23:13:46 25
原创 算法通关村第二关-青铜挑战
两种方法在遍历链表时当前节点的后继指针会发生改变,原链表会在此处断开,为了能继续遍历原链表,需要保存当前节点的后继节点。
2023-12-03 19:41:08 36
原创 算法通关第一关-白银挑战(二)
思路:待删除的特定节点可能是首节点,创建虚拟头节点指向首节点,从虚拟节点开始遍历,找到特定元素的前驱节点将其后继删除,由于待删除节点可能不唯一,需要将链表遍历到末尾的前驱。
2023-12-03 10:38:32 18
原创 算法通关村第一关-白银挑战(一)
回文链表例如:1->2->3->3->2->1思路:通过观察回文链表的结构,呈左右两边对称,想到使用栈结构,遍历链表,当栈为空或者栈顶不等于当前链表的值时,将当前链表的值压入栈,如果栈顶等于当前节点的值,将栈顶出栈,继续向下遍历,直到链表到达最后一个节点,此时判断如果栈为空,则是回文链表,反之则不是;思路:先实现2个链表合并,已知两个链表有序,合并时遍历两个链表,取两个链表当前遍历节点比较值,取最小值节点插入合并链表,如果其中一个链表遍历到最后一个值,另一个还没有遍历完,直接拼接在结果链表之后;
2023-12-02 23:48:54 49
原创 设计模式简要概述(一)
1、设计模式的概念:在软件设计的过程中,总结出解决特定问题的解决方案,具有一定的普遍性,可以重复使用,本质是对面向对象设计原则的实际应用。2、设计模式的分类:创建型模式:用于描述怎样创建对象,主要特点是将对象的创建与使用分离(解耦),分为单例,原型,工厂方法,抽象工厂,建造者5种创建型模式 ====== “建房材料”结构性模式:用于描述如何将类或对象按照某种布局组成更大的结构,分为代理,适配器,桥接,外观,组合,享元,组合等七种结构型模式=======“房子结构”行为型模式:用于描述类或
2021-10-27 13:20:36 248
原创 课题实训四
android开发课题三1、要求要求:实现一个应用,包含一个Acitivity和Service;Service中每隔10秒发送一个广播,并携带一个随机4位数参数,Activity中动态注册接广播收器接收该广播参数,对1到该参数做求和运算,并显示在界面;退出Activity后结束服务。...
2021-09-02 09:32:36 105
原创 课题实训五
android开发课题三1、要求要求:实现一个应用,包含一个Acitivity和Service;Service中每隔10秒发送一个广播,并携带一个随机4位数参数,Activity中动态注册接广播收器接收该广播参数,对1到该参数做求和运算,并显示在界面;退出Activity后结束服务。...
2021-09-02 09:31:57 104
原创 实训课题三
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2021-09-02 09:31:23 54
原创 实训课题二
android开发课题二1、要求实现一个应用,包含一个Acitivity和Service,Acitivity包含“启动”、“结束”两个按钮;点击启动按钮,启动服务,点击结束按钮,结束服务;退出Activity时,结束服务;服务运行时,Log打印每隔一秒循环输出一个递增值,从0开始。2、Service:服务在后台运行,不可见;例如:Google Play服务,Andrioid键盘等。3、StartService生命周期4、 @Override...
2021-09-02 09:30:47 114
原创 实训课题一
android开发课题一1、要求:实现一个应用,包含三个Activity,分别显示“界面一”、“界面二”、“界面三”;每个Activity居中包含一个按钮,前两个Acitivty中显示“跳转”,点击后跳转到下一个Activity界面;最后一个Activity中显示“结束”,点击退出应用。2、重要知识点一:Activity的生命周期Activity类中定义了7个回调方法,覆盖了活动生命周期的每隔环节。①onCreate(),它会在活动第一次被创建的时候调用。开发者要在这个方法中完成活动的初始化操作
2021-09-02 09:30:26 95
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人