数据结构与算法
文章平均质量分 66
小馨馨的小翟
遗憾总是贯穿人生始终。阿里云专家博主,CSDN人工智能领域优质创作者,SnnGrow开源社区特邀作者,中国移动搬砖员工
展开
-
C++语法基础(六)
根据学习菜鸟教程笔记:C++ 数据类型 | 菜鸟教程 一些基本类型可以使用一个或多个类型修饰符进行修饰: 下表显示了各种变量类型在内存中存储值时需要占用的内存,以及该类型的变量所能存储的最大值和最小值。注意:不同系统会有所差异,一字节为 8 位。注意:默认情况下,int、short、long都是带符号的,即 signed。注意:long int 8 个字节,int 都是 4 个字节,早期的 C 编译器定义了 long int 占用 4 个字节,int 占用 2 个字节,新版的 C/C++ 标准兼容了早期的这原创 2022-06-19 10:56:27 · 226 阅读 · 0 评论 -
(肝了三个小时的困难题-必须记录一下)剑指 Offer 37. 序列化二叉树-----python && C++源代码
剑指 Offer 37. 序列化二叉树难度困难306收藏分享切换为英文接收动态反馈请实现两个函数,分别用来序列化和反序列化二叉树。你需要设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。提示:输入输出格式与 LeetCode 目前使用的方式一致,详情请参阅LeetCode 序列化二叉树的格式。你并非必须采取这种方式,你也可以采用其他的方法解决这个问题。示例:.原创 2022-05-24 22:24:13 · 181 阅读 · 0 评论 -
剑指 Offer 36. 二叉搜索树与双向链表--------python && C++源代码
剑指 Offer 36. 二叉搜索树与双向链表难度中等504收藏分享切换为英文接收动态反馈输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。为了让您更好地理解问题,以下面的二叉搜索树为例:我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。下图展示了上面的二叉搜索树转化成的链表。“head”原创 2022-05-23 20:15:51 · 167 阅读 · 0 评论 -
字节跳动笔试题——复杂链表的复杂——剑指 Offer 35. 复杂链表的复制——python && C++源代码
剑指 Offer 35. 复杂链表的复制难度中等529收藏分享切换为英文接收动态反馈请实现copyRandomList函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个next指针指向下一个节点,还有一个random指针指向链表中的任意节点或者null。示例 1:输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]示例 2:...原创 2022-05-23 19:06:07 · 166 阅读 · 0 评论 -
约瑟夫环——公式法——附LeetCode—剑指offer题目—剑指 Offer 62. 圆圈中最后剩下的数字
约瑟夫环问题: 约瑟夫问题是个著名的数学问题,N个人围成一圈,从第一个人开始数,杀掉第M个人。然后从第M+1个人再开始数,数到第M个人再杀掉,然后再从第M+1个人开始数,数到第M个人再次杀掉,反复进行,直到这圈人只剩下最后一个人。游戏结束。那么问题来了,如何快速的判断最后留下的那个人是谁呢?这就是约瑟夫环要研究的问题。我们以数组为例研究,假设 N=8 , M=3, F(8 , 3) = 7 (这个7是 7这个人的序号) ...原创 2022-05-20 16:13:46 · 824 阅读 · 0 评论 -
有趣的数学推导题目-leetcode462. 最少移动次数使数组元素相等 II
给你一个长度为 n 的整数数组 nums ,返回使所有数组元素相等需要的最少移动数。在一步操作中,你可以使数组中的一个元素加 1 或者减 1 。示例 1:输入:nums = [1,2,3]输出:2解释:只需要两步操作(每步操作指南使一个元素加 1 或减 1):[1,2,3] => [2,2,3] => [2,2,2]示例 2:输入:nums = [1,10,2,9]输出:16提示:n == nums.length1 <= nums....原创 2022-05-19 10:19:08 · 210 阅读 · 0 评论 -
压入弹出堆栈算法-附LeetCode剑指 Offer 31. 栈的压入、弹出序列-题解-python && C++源代码
剑指 Offer 31. 栈的压入、弹出序列难度中等334收藏分享切换为英文接收动态反馈输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:tr原创 2022-05-16 12:52:20 · 212 阅读 · 2 评论 -
2022年5月14日LeetCode双周赛第三题-6068. 毯子覆盖的最多白色砖块数
6068. 毯子覆盖的最多白色砖块数难度中等4收藏分享切换为英文接收动态反馈给你一个二维整数数组tiles,其中tiles[i] = [li, ri],表示所有在li<= j <= ri之间的每个瓷砖位置j都被涂成了白色。同时给你一个整数carpetLen,表示可以放在任何位置的一块毯子。请你返回使用这块毯子,最多可以盖住多少块瓷砖。示例 1:输入:tiles = [[1,5],[10,11],[12,18],[20,25],[30,...原创 2022-05-15 13:25:41 · 1351 阅读 · 2 评论 -
前缀和+后缀和算法模板-附LeetCode习题-面试题 01.05. 一次编辑
面试题 01.05. 一次编辑难度中等142收藏分享切换为英文接收动态反馈字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。示例 1:输入: first = "pale"second = "ple"输出: True示例 2:输入: first = "pales"second = "pal"输出: False通过次数47,199提交次数142,718解题思路:如果原创 2022-05-13 10:19:56 · 350 阅读 · 0 评论 -
C++数据结构算法(五)动态规划
例题带入:代码实现动态规划的代码实现相对简单,基本上是使用循环来计算递推序列的过程。下面直接给出代码:#include <bits/stdc++.h>#define N 1005#define M 110using namespace std;int n;int a[N][N], f[N][N];int main() { // 输入 cin >> n; for (int i = 1; i <= n; ++i) for原创 2022-05-12 22:23:16 · 592 阅读 · 0 评论 -
C++数据结构算法(四)递推与递归
递推思想简介:递推,意思就是用已经有的信息一点点推出想要知道的信息。比如,平面上有一个机器人,一开始在坐标(0,0)处,第一秒向东移动一米,第二秒向南移动两米,第三秒向西移动三米,第四秒向北移动四米……机器人一直按照这个规律移动下去。由于我们知道了最开始的时候机器人的位置,我们就可以一秒一秒地推算出接下来每一个时刻机器人的位置。这就是递推。显然,如果我们用人脑去模拟一个递推算法,是比较简单的,因为“根据已有信息推出未知信息”是我们常用的思考方式,符合直觉。如果用电脑运行递推算法,我们应该原创 2022-05-11 20:36:22 · 965 阅读 · 0 评论 -
C++数据结构算法(三)二分查找
二分查找:原创 2022-05-11 11:29:05 · 1355 阅读 · 0 评论 -
BFS逛街算法模板-附LeetCode习题-433. 最小基因变化-广度优先搜索
433. 最小基因变化难度中等173收藏分享切换为英文接收动态反馈基因序列可以表示为一条由 8 个字符组成的字符串,其中每个字符都是'A'、'C'、'G'和'T'之一。假设我们需要调查从基因序列start变为end所发生的基因变化。一次基因变化就意味着这个基因序列中的一个字符发生了变化。例如,"AACCGGTT" --> "AACCGGTA"就是一次基因变化。另有一个基因库bank记录了所有有效的基因变化,只有基因库中的基因才是有效的基因序列。给你两个基因序...原创 2022-05-07 16:52:22 · 247 阅读 · 0 评论 -
C++数据结构算法(二)排序算法集合
排序算法(Sorting Algorithm) 的作用在于对于给定的一个元素序列,输出满足某种顺序的该序列的一个排列。代码实现 —— 数最小值数组最小值首先,如何找到n个元素的最小值,并记录它的位置? 最开始,我们默认最小值出现在数组的第1位,所以,用于记录最小值位置的变量min_pos初始值为1。 然后,枚举数组中的每个元素,并且将当前记录的最小值和枚举到的第i个元素作比较,如果当前枚举到的元素更小,说明最小值不可能出现在原来的min_pos位置,而更有可能出现的位原创 2022-05-06 16:16:58 · 365 阅读 · 0 评论 -
C++数据结构算法(一)
数据结构研究什么?数据结构研究的是在抽象层面上一组有特定关系的数据的存储与处理。学习数据结构就是研究:问题定义 数据之间的逻辑关系 关系对应的操作 问题解决 存储实现:如何存储某种逻辑关系 运算实现:在特定存储模式下,相关操作是如何实现的 数据结构的基本概念定义数据结构(data structure)是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法.原创 2022-05-03 16:14:09 · 1446 阅读 · 0 评论 -
DFS逛街算法模板-附剑指offer习题-LeetCode-深度优先搜索
思路:上下左右不停的走,能走就行,走不了就撤,设置标志位,这样就只走没走过的地方,不停的上下左右转即可。对于出界和走过的地方给予剪枝处理,剩下的继续逛街就行。我愿称之为逛街算法。题目1:剑指 Offer 12. 矩阵中的路径难度中等582收藏分享切换为英文接收动态反馈给定一个m x n二维字符网格board和一个字符串单词word。如果word存在于网格中,返回true;否则,返回false。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其...原创 2022-04-27 11:40:34 · 354 阅读 · 0 评论