算法与数据结构
文章平均质量分 70
程序之灵魂
Monkey Ji
凡事先独立思考,再去做!!
展开
-
猜数字游戏 (Leetcode 299)[C++实现]
使用 哈希表的思想 ,通过 数组的下标对应数值 ,下标对应的数值 巧妙存储了数值出现的次数。原创 2021-11-09 15:22:55 · 206 阅读 · 0 评论 -
位图 及 代码实现
位图是一种特殊的哈希表。原创 2021-11-02 21:14:40 · 387 阅读 · 0 评论 -
数据结构—单调栈(处理 下一个更大元素 和 接雨水 问题)
单调栈,就是对入栈和出栈,通过条件限制,实现栈内数据的单调性。原创 2021-10-30 17:36:50 · 166 阅读 · 0 评论 -
循环数组 及 实现
数组是一种线性结构,在内存中是一段 连续的内存存储空间存储。 那么如何实现循环的数组呢?什么是循环数组? 循环数组就是数组的头尾是相连的。假如有一个数组 [3,7,2,9,1,5] ,形成的环形数组如下图:用代码实现,如下:vector<int> num = {3,7,2,9,1,5};int size = num.size();int i = 0;while (true){ cout << " " <&...原创 2021-10-28 10:12:28 · 4847 阅读 · 0 评论 -
N叉树的前序遍历 ( 使用数组实现 N叉树 )
一、N叉树的节点Node定义如下:class Node{public: int val; vector<Node*> children; Node() {} Node(int _val) { val = _val; } Node(int _val, vector<Node*> _children) { val = _val; children = _children;..原创 2021-10-11 18:26:38 · 504 阅读 · 0 评论 -
跳表的原理与实现 [图解]
针对有序链表为了实现高效的查找,可以使用跳表这种数据结构。其根本思想是 二分查找 的思想。跳表的前提条件是针对有序的单链表 ,实现高效地查找,插入,删除。原创 2021-09-02 00:19:04 · 16970 阅读 · 9 评论 -
图的表示 与 图的遍历(DFS 和 BFS)
链表、树与图的关系:链表是特殊化的树,树是特殊化的图。一、图的存储 图的存储有三种方式:邻接矩阵、出边数组和邻接表。 上图中三种表示方式的介绍如下:1.邻接矩阵: 矩阵中的值为1, 代表 存在行坐标到列坐标 的边。如果有权重值的话,可以将1设置成相应的权重值。 这种表示方法的缺点是边数相对顶点较少的图,存在对存储空间的浪费。2.出边数组: 数组[1,2...原创 2021-08-24 19:16:36 · 594 阅读 · 0 评论 -
Leetcode 8.字符串转换整数 (atoi)(C++实现)
一.题目8.字符串转换整数(atoi)请你来实现一个myAtoi(string s)函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的atoi函数)。函数myAtoi(string s)的算法如下:读入字符串并丢弃无用的前导空格 检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。 读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略...原创 2021-08-16 23:14:45 · 179 阅读 · 0 评论 -
堆与堆排序
目录一.堆的定义二.堆的性质2.1堆的性质:2.2堆的分类2.3数组表示的性质三.堆排序的过程四.堆排序的优点堆是一种数据结构,与堆内存的概念不同。一.堆的定义堆是一个可以被看做一棵 完全二叉树 的 数组对象。二.堆的性质2.1堆的性质: 1.堆中某个结点的值总是不大于或不小于其父结点的值 2.堆总是一棵完全二叉树。2.2堆的分类按照根结点是 最大值 还是 最小值分为大根堆和小根堆:大...原创 2021-08-12 00:14:18 · 724 阅读 · 0 评论 -
从前序和中序遍历序列构造二叉树 & 从中序和后序遍历序列构造二叉树 (C++实现)
从前序和后序遍历序列,并不能唯一确定一棵二叉树。从前序和中序遍历或 中序和后序遍历序列 可以唯一确定一棵二叉树。一、从前序和中序遍历序列构造二叉树1.题目:Leetcode 105:给定一棵树的前序遍历preorder与中序遍历inorder。请构造二叉树并返回其根节点。2.解析:例如:preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]3.代码实现:/** * Definition for a b...原创 2021-08-04 18:21:39 · 712 阅读 · 0 评论 -
Leetcode56 合并区间 (C++实现)
一、题目以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。示例1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例2:输入:intervals = [[1,原创 2021-08-03 19:07:31 · 418 阅读 · 0 评论 -
LRU 算法实现 (C++实现)
LeetCode 146题:运用你所掌握的数据结构,设计和实现一个LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达...原创 2021-08-02 16:20:21 · 1988 阅读 · 1 评论