
数据结构
byg_qlh
技术交流,资源分享,欢迎关注
展开
-
Leetcode-重新排列数组
给你一个数组 nums ,数组中有 2n 个元素,按 [x1,x2,…,xn,y1,y2,…,yn] 的格式排列。请你将数组按 [x1,y1,x2,y2,…,xn,yn] 格式重新排列,返回重排后的数组。原创 2025-02-25 08:54:56 · 320 阅读 · 0 评论 -
LeetCode:数组异或操作
给你两个整数,n 和 start。数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length。请返回 nums 中所有元素按位异或(XOR)后得到的结果。原创 2025-02-24 15:38:13 · 201 阅读 · 0 评论 -
统计有序矩阵中的负数
给你一个m * n的矩阵grid,矩阵中的元素无论是按行还是按列,都以非递增顺序排列。请你统计并返回grid中的数目。原创 2025-01-10 17:00:22 · 664 阅读 · 0 评论 -
解压编码列表
给你一个以行程长度编码压缩的整数列表 nums。考虑每对相邻的两个元素 [freq, val] = [nums[2i], nums[2i+1]] (其中 i >= 0 ),每一对都表示解压后子列表中有 freq 个值为 val 的元素,你需要从左到右连接所有子列表以生成解压后的列表。请你返回解压后的列表。原创 2025-01-10 16:59:34 · 151 阅读 · 0 评论 -
二叉树的层次遍历
给你一个二叉树,请你返回其按 层次遍历 得到的节点值(即逐层地,从做到右访问所有节点)原创 2025-01-09 17:00:42 · 204 阅读 · 0 评论 -
旋转数组的三种解决方式
给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。原创 2025-01-09 16:59:21 · 360 阅读 · 0 评论 -
有多少小于当前数字的数字
给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j!= i 且 nums[j] < nums[i]。以数组形式返回答案。原创 2025-01-06 09:22:53 · 198 阅读 · 0 评论 -
字符串相加
给定两个字符串形式的非负整数 num1 和 num2,计算他们的和注意:num1 和num2 的长度都小于 5100.num1 和num2 都只包含数字 0-9.num1 和num2 都不包含任何前导零。你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。原创 2024-12-17 15:57:19 · 191 阅读 · 0 评论 -
快速排序详解,算法思想讲解——python实现
快速排序也是分治的思想,但是它于归并算法更加好,是因为归并算法会用到辅助数组,其空间复杂度为O(n),而快速排序不需要用到新的数组空间,它的空间复杂度是O(1)快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。原创 2024-12-03 14:19:58 · 301 阅读 · 0 评论 -
消息队列面试——打破沙锅问到底
一般而言,如果一个面试官水平还不错,会沿着从浅入深挖一个点,然后按着这个思路一直问下去,除了这里的七大问题之后,甚至还能挑着你熟悉的一个MQ一直问到源码级别,还可能结合项目来仔细问,先讲讲具体的业务细节,然后将业务跟这些MQ的问题场景结合起来,看看你的每个细节是如何处理和实现的。原创 2024-11-01 08:51:21 · 1167 阅读 · 0 评论 -
斐波那契数列递归与非递归的解法-数据结构
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39。原创 2024-10-30 15:06:37 · 531 阅读 · 0 评论 -
消息队列面试题:如何写一个消息队列
面试官:如果让你写一个消息队列,该如何进行架构设计?请说明一下设计思路。原创 2024-06-14 08:38:56 · 171 阅读 · 0 评论 -
二叉树的构建——Java实现(详细注释 + 原理分析)
1.后序遍历中最后一个元素为树的根节点,找到根节点的数值,并得到根节点在中序遍历中的位置,然后用来进行递归构建二叉树即可。2.层序遍历用到了bfs的深度优先搜索遍历,我们存放在list容器中,实现层序遍历的输出。原创 2024-05-25 07:03:41 · 383 阅读 · 0 评论 -
快速排序详解——多种实现方式
任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。原创 2024-05-25 07:00:38 · 551 阅读 · 0 评论 -
C++实现各种队列(详解)——普通队列,双端队列,优先队列
【代码】C++实现各种队列(详解)——普通队列,双端队列,优先队列。原创 2024-05-22 17:17:45 · 528 阅读 · 0 评论 -
C语言的文件操作详解(字符读写,字符串读写,快数据读写,格式化读写)
fputc。原创 2024-05-18 08:10:31 · 1685 阅读 · 0 评论 -
合并二叉树
1、对于树的递归,可以先判断特殊情况,就是说为空的情况,二叉树为空的情况一般就是递归出口。2、把递归出口弄清楚之后,再处理细节问题。原创 2024-05-15 16:18:14 · 142 阅读 · 0 评论 -
Hashmap详细解析,原理及使用方法分析
HashMap使用第0个桶存放键为null的键值对。原创 2024-05-14 09:01:35 · 515 阅读 · 1 评论 -
在排序数组中查找数字
2、在最后找到目标值的情况下,在那个区间里面进行逐个遍历,大大降低了时间复杂度。问题:在已经排好序的数组中查找指定数字。1、使用到了二分查找。原创 2024-04-30 11:19:20 · 152 阅读 · 0 评论 -
用两个栈实现队列
4、所以出栈的时候讲a栈所有内容弹出到b栈,弹出b栈的栈顶就是要出队的元素。5、出队完成之后,b栈的内容全部在导入a栈中。1、使用两个栈(栈a,栈b)模拟一个队列。2、入队时候直接放在a栈的栈顶。3、出队的内容,在a栈的栈底。原创 2024-04-30 11:14:53 · 220 阅读 · 0 评论 -
复杂链表的复制
【代码】复杂链表的复制。原创 2024-04-29 09:43:42 · 185 阅读 · 0 评论 -
C++实现链栈
C++实现链栈创建链栈从头至尾打印链表入栈弹栈得到栈顶节点数据整体代码:#include<iostream>using namespace std;struct Node{//节点类与链表的节点类一样 int data; Node *next;};class LStack{//链栈不带头结点 private: Node *point; i...原创 2020-04-02 21:43:52 · 392 阅读 · 0 评论 -
C++实现顺序栈
C++实现顺序栈1.初始化顺序栈2.压栈3.弹栈4.取得栈顶元素5.从栈底打印6.从栈顶打印整体代码:#include<iostream>using namespace std;struct SqStack{ int data[10];//存放栈的静态数组 int top;//栈顶指针 };bool initStack(SqStack &s...原创 2020-04-02 21:41:22 · 191 阅读 · 0 评论 -
C++实现单链表
C++实现单链表1. 尾插法创建链表2. 头插法创建链表3. 从头至尾打印链表4. 查找指定位置数据5. 查找指定数据是否存在6. 在指定位置插入指定值7. 删除链表指定位置的节点8. 获得链表当前长度整体代码:```cpp#include<iostream>using namespace std;struct Node{//节点类 int data...原创 2020-03-31 21:49:29 · 307 阅读 · 0 评论 -
C++实现动态数组
C++实现动态数组1. 数组初始化2. 给数组赋值3. 打印数组4. 增加数组长度5. 数组最后一个值替代最小值6. 逆置数组元素7. 逆置数组中指定位置范围的元素8. 删除数组中值为x的所有元素9. 删除所有介于s和t之间(包含s与t)的元素10. 有序表中删除相同元素11. 合并两个有序数组,合并结果存入第三个数组12. 将数组中的前m位与后n为的位置互换整体代码如下...原创 2020-03-31 21:43:57 · 5428 阅读 · 0 评论 -
数据库系统原理知识点小结
数据库系统原理一、引言1.数据模型:数据模型是数据库的基础。规定的模式统一描述方式的模型2.数据:事实或客观的结果,对客观事务的逻辑归纳,以元组的形式存储于数据库中的信息3.数据库:一系列互相关联的数据的集合4.数据库系统:由一个互相关联的数据的集合和一组用以访问这些数据的程序组成5.视图:某一表现形式下表现出来的数据库中的数据,不一定真实存储于计算机中,但是通过查询可见的视图,提供了...原创 2020-01-14 16:57:14 · 1757 阅读 · 0 评论 -
java简易双向链表的实现(添加和双向输出操作)
节点类与单链表的区别主要在于添加节点时,需要指定新添加节点的前驱class Node{//节点类 private String name; private Node pervious; protected Node next; public Node(){} public Node(String name){this.setName(name);} public Node(St...原创 2019-04-09 19:59:33 · 992 阅读 · 0 评论 -
单链表基本操作合集及详细注释(java语言描述1.添加节点 2.返回节点 3.查找节点 4.删除节点 5.改变节点 6.删除类型节点 7.指定位插入 8.倒数第K节点 9.链表长度10.链表输出)
单链表操作合集及详细注释实现操作(以下是Link类中的方法序列):1.添加节点2.返回指定节点3.查找是否存在指定节点4.删除指定节点5.改变指定节点6.删除所有指定类型节点7.在指定节点后插入新节点8.得到倒数第k个节点9.得到链表长度10.输出链表代码段:package 链表;class Person{//////////////////////////////...原创 2019-03-23 17:40:20 · 578 阅读 · 0 评论