自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 直接插入排序算法详解

直接插入排序(Straight Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,找到排序位置后,需要将已排序元素逐步向后挪位,为最新元素提供插入空间。

2024-07-20 22:06:32 577

原创 快速排序算法详解

快速排序(Quick Sort)是计算机科学与技术领域中非常经典的一种排序算法,由C. A. R. Hoare在1960年提出。它应用分治思想进行排序,通过对数据进行分区操作,并递归地对分区后的子序列进行排序,从而达到整个序列有序的目的。

2024-07-18 22:30:07 2414

原创 动态规划试题

动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。所以动态规划中每一个状态一定是由上一个状态推导出来的,,贪心没有状态推导,而是从局部直接选最优的,

2024-07-17 13:47:22 815

原创 数据结构常用算法理论

贪心算法在每一步都做出最优选择,但不保证全局最优。回溯算法通过穷举所有可能的解来找出所有解,适用于需要找出所有解的问题。动态规划算法通过解决子问题并存储子问题的解来避免重复计算,适用于具有重叠子问题和最优子结构的问题。分治(Divide and Conquer)算法,全称分而治之,是一种非常重要且常见的算法策略。其基本思想是将一个复杂的问题分解成两个或更多的相同或相似的子问题,直到这些子问题变得简单到可以直接求解为止,然后将子问题的解合并起来,从而得到原问题的解。

2024-07-16 21:50:06 1042

原创 栈与队列的相关理论及联系

入队(Enqueue):将元素压入第一个栈(我们称之为“输入栈”)。出队(Dequeue)如果第二个栈(我们称之为“输出栈”)为空,则将第一个栈中的所有元素依次弹出并压入第二个栈。此时,第一个栈的栈底元素(即最先入队的元素)就变成了第二个栈的栈顶元素。然后从第二个栈中弹出栈顶元素,该元素即为队列的队首元素。检查队列是否为空:如果两个栈都为空,则队列为空。// 输入栈// 输出栈// 入队// 出队// 如果输出栈为空,则将输入栈的元素倒序压入输出栈while (!

2024-07-16 14:36:48 1076

原创 二叉树层序遍历相关试题

第 0 层的平均值为 3,第 1 层的平均值为 14.5,第 2 层的平均值为 11。,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历), 以数组的形式返回每一层节点的平均值。(即逐层地,从左到右访问所有节点)。因此返回 [3, 14.5, 11]。给定一个非空二叉树的根节点。以内的答案可以被接受。

2024-07-15 21:50:07 533

原创 二叉树的层序遍历

二叉树的层序遍历(Level Order Traversal)是指按照从上到下、从左到右的顺序访问二叉树的每个节点。实现层序遍历通常使用队列作为辅助数据结构。层序遍历二叉树的:创建一个队列queue,用于存放将要访问的节点。:如果二叉树的根节点root不为空,则将根节点入队。:当队列不为空时,进行循环遍历。nodenodenodenode:当队列为空时,遍历结束。

2024-07-15 12:07:05 1790

原创 反转字符串

可以封装一个自定义的反转函数,以便在需要时重复使用。

2024-07-14 21:45:32 1097

原创 二叉树相关理论知识

二叉树(Binary Tree)是n(n≥0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树组成。二叉树是一种有序树,即左右子树是有顺序的,不能颠倒。

2024-07-12 21:41:45 1554

原创 哈希表理论基础

哈希表(Hash Table),也称为散列表,是一种通过哈希函数组织数据,以支持快速插入和搜索的数据结构。哈希表允许通过关键字(Key)进行数据的快速查找、插入和删除。哈希表的核心思想是通过哈希函数将关键字映射到表中的一个位置来访问记录,以加快查找的速度。这个映射的位置被称为哈希地址或槽(Slot)

2024-07-10 11:10:41 709

原创 使用K近邻算法诊断乳腺癌

对于测试集中的每一个样本,将使用特定的距离计算方法找出k个近邻,其中k是一个可以指定的参数。通过对比我们构建的K近邻模型在测试数据上的预测结果breast_cancer_test_pred和测试样本真实的类标签,我们可以评估我们构建的乳腺癌诊断模型的应用效果。通过对比我们构建的K近邻模型在测试数据上的预测结果breast_cancer_test_pred和测试样本真实的类标签,我们可以评估我们构建的乳腺癌诊断模型的应用效果。我们将分别测试 k = 1,5,9,11,15,21,27 时模型的效果。

2024-07-09 21:48:29 909

原创 双指针滑动窗口

双指针滑动窗口是一种常用的算法技巧,特别适用于解决一些涉及连续子数组或子串的问题。这种算法通过维护一个“窗口”在数组或字符串上滑动,以找到满足特定条件的子数组或子串。

2024-07-09 20:38:13 877

原创 c++STL教程

键值对map存储的是键值对,其中每个键都是唯一的。排序map中的元素按照键的顺序自动排序,通常是升序。唯一性:每个键在map中只能出现一次。双向迭代器map提供了双向迭代器,可以向前和向后遍历元素。迭代器并不是一个具体的类型,而是一个抽象的概念。在C++中,迭代器通常是通过模板类实现的,这些模板类提供了对容器元素的访问和操作。迭代器必须至少支持(解引用)、++(递增)、--(递减,如果支持的话)、==(相等性比较)和!(不等性比较)等操作。

2024-07-08 20:43:14 863

原创 数组理论及移除元素

数组是非常基础的数据结构,在面试中,考察数组的题目一般在思维上都不难,主要是考察对代码的掌控能力。首先要知道数组在内存中的存储方式,这样才能真正理解数组相关内容。而且大家如果使用C++的话,要注意vector 和 array的区别,vector的底层实现是array,严格来讲vector是容器,不是数组。这个题目暴力的解法就是两层for循环,一个for循环遍历数组元素 ,第二个for循环更新数组。

2024-07-08 14:27:16 280

原创 力扣9、回文数

所有负数都不可能是回文,例如:-123 不是回文,因为 - 不等于 3。所以我们可以对所有负数返回 false。除了 0 以外,所有个位是 0 的数字不可能是回文,因为最高位不等于 0。所以我们可以对所有大于 0 且个位是 0 的数字返回 false。将数字本身反转,然后将反转后的数字与原始数字进行比较,如果它们是相同的,那么这个数字就是回文。回文数是指一个数字从左往右读和从右往左读是一样的数字,例如121、1331就是回文数。但是,如果反转后的数字大于 int.MAX,我们将遇到整数溢出问题。

2024-07-07 17:02:21 172

原创 常用函数.

将数字常量转换为字符串,返回值为转换完毕的字符串//将整数i转换为字符串表示形式一种构造string的方法形式 : s.substr(pos, len)返回值:string,包含s中从pos开始的len个字符的拷贝(pos的默认值是0len的默认值是,即不加参数会默认拷贝整个s异常 :若pos的值超过了string的大小,则substr函数会抛出一个异常;若pos+n的值超过了string的大小,则substr会调整n。

2024-07-07 16:40:57 864

原创 八大排序算法

有时候有些属性是有优先顺序的,先按高优先级排序,再按低优先级排序,最后的次序就是高优先级高的在前,高优先级相同的低优先级高的在前。有时候有些属性是有优先顺序的,先按低优先级排序,再按高优先级排序,最后的次序就是高优先级高的在前,高优先级相同的低优先级高的在前。基数排序的LSD版本适合于位数少的数列,如果数列最大数位数很多,而且位数相差很大,就不适合了,因为可能前面很多位都是0(导致有许多无效的排序)。选择排序在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后以此类推,直到所有元素均排序完毕。

2024-07-07 15:26:09 420

原创 力扣3、无重复字符的最长字串

在上面的流程中,我们还需要使用一种数据结构来判断 是否有重复的字符,常用的数据结构为哈希集合(即 C++ 中的 std::unordered_set,Java 中的 HashSet,Python 中的 set, JavaScript 中的 Set)。在每一步的操作中,我们会将左指针向右移动一格,表示 我们开始枚举下一个字符作为起始位置,然后我们可以不断地向右移动右指针,但需要保证这两个指针对应的子串中没有重复的字符。在移动结束后,这个子串就对应着 以左指针开始的,不包含重复字符的最长子串。

2024-07-07 15:15:20 151

原创 二分查找!!!

【代码】二分查找。

2024-07-07 14:46:14 247

原创 力扣 2、两数相加

将长度较短的链表在末尾补零使得两个连表长度相等,再一个一个元素对其相加(考虑进位)在较短的链表末尾补零,使两个链表长度一致。获取两个链表所对应的长度。

2024-07-04 22:06:57 173

原创 力扣 1、两数之和

枚举出所有组合,查找到第一个满足的即可。

2024-07-04 20:31:09 107

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除