数据结构
qq_20880939
这个作者很懒,什么都没留下…
展开
-
最通俗易懂的 飞控基础--牛顿欧拉模型:
最通俗易懂的 飞控基础--牛顿欧拉模型:https://www.sohu.com/a/253962639_464087转载 2020-11-08 19:58:07 · 416 阅读 · 1 评论 -
面试题·03.02
请设计一个栈,除了常规栈支持的pop与push函数以外,还支持min函数,该函数返回栈元素中的最小值。执行push、pop和min操作的时间复杂度必须为O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.getMin(); --> 返回 -3.minStack.pop();minStack.top(); ...原创 2020-06-16 20:27:20 · 188 阅读 · 0 评论 -
面试题03.01 三合一
三合一。描述如何只用一个数组来实现三个栈。你应该实现push(stackNum, value)、pop(stackNum)、isEmpty(stackNum)、peek(stackNum)方法。stackNum表示栈下标,value表示压入的值。构造函数会传入一个stackSize参数,代表每个栈的大小。示例1:输入:["TripleInOne", "push", "push", "pop", "pop", "pop", "isEmpty"][[1], [0, 1], [0, 2], .原创 2020-06-15 22:30:32 · 312 阅读 · 0 评论 -
面试02.08 判断链表是否有环?
地球人估计都知道这道题的解法了;1. 首先设计快慢指针,当存在快慢指针重合时,说明这个链表存在环,当快慢指针没有重合时,则不存在环;2. 当链表存在环时,可以将慢指针置为head节点,然后快指针位置不动,然后以此进行遍历,当下次快慢指针再次重合时,就是环链表的入口地址;至于why, 自己画一下吧;/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *nex.原创 2020-06-14 22:55:03 · 149 阅读 · 0 评论 -
面试题02.07 链表相交
题目大概练过leetcode的链表部分估计都做过这道题;示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。在 A 中,相交节点前原创 2020-06-14 22:10:24 · 243 阅读 · 0 评论 -
判断一个回文链表
示例 1:输入: 1->2输出: false 示例 2:输入: 1->2->2->1输出: true /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {.原创 2020-06-11 07:00:55 · 180 阅读 · 0 评论 -
面试02.05 链表求和
示例:输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295输出:2 -> 1 -> 9,即912最麻烦的代码,最易理解的思路;/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {}原创 2020-06-10 23:10:30 · 216 阅读 · 0 评论 -
面试题02.02 返回倒数第k个节点
实现一种算法,找出单向链表中倒数第k个节点,返回该节点的值;示例:输入: 1->2->3->4->5 和 k = 2输出: 4分析: 可以先遍历一遍链表,计算链表的长度;然后根据正反向关系就可以得到节点;/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(原创 2020-06-10 22:14:48 · 199 阅读 · 1 评论 -
面试题02.01 移除重复点
编写代码,移除未排序链表中的重复节点。保留最开始出现的节点;示例:输入:[1,2,3,3,2,1]输出:[1,2,3]分析: 使用辅助哈希表来判断当前链表上的点是否已经在之前的链表上存在过,如果没有存在,则将该链表的节点添加在新的链表的节点上。此时注意要将这个链表节点值添加在哈希表上,为了方便下一次判断。如果存在了,则不用添加;/** * Definition for singly-linked list. * struct ListNode { * int val;原创 2020-06-10 21:56:43 · 195 阅读 · 0 评论 -
面试题01.09 字符串轮转
字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。示例1:输入:s1 = "waterbottle", s2 = "erbottlewat"输出:True下面是我参考的解答: 只能用陈独秀来形容了;class Solution {public: bool isFlipedString(string s1, string s2) { return s1.siz...原创 2020-06-09 22:14:42 · 254 阅读 · 0 评论 -
面试题01.08 零矩阵
编写一种算法,若M*N矩阵中的某个元素为0,则将其所在的行与列置为0;示例 1:输入:[ [1,1,1], [1,0,1], [1,1,1]]输出:[ [1,0,1], [0,0,0], [1,0,1]]分析: 遍历这个二维数组,分别生成行向量数组与列向量数组用于记录0的所在的行与列;然后再次遍历这个数组,将零所在的行与列置为0;class Solution {public: void setZeroes(vector<vector<...原创 2020-06-09 21:33:00 · 236 阅读 · 0 评论 -
旋转矩阵
给你一幅由N × N矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。示例 1:给定 matrix =[ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]----------------------------------------------------------------------------------------...原创 2020-05-30 22:37:50 · 189 阅读 · 0 评论 -
字符串压缩
字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。示例1:输入:"aabcccccaaa"输出:"a2b1c5a3"示例2:输入:"abbccd"输出:"abbccd"解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。---------------------------...原创 2020-05-30 22:15:14 · 187 阅读 · 0 评论 -
字符串的一次编辑
字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。示例1:输入:first = "pale"second = "ple"输出: True示例2:输入:first = "pales"second = "pal"输出: False------------------------------------------------------------------------------...原创 2020-05-30 21:45:19 · 313 阅读 · 0 评论 -
回文排列
给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。示例1:输入:"tactcoa"输出:true(排列有"tacocat"、"atcocta",等等)----------------------------------------------------------------------------------------------------------------1, 做题原创 2020-05-29 22:22:38 · 332 阅读 · 0 评论 -
字符串的URL化
URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)示例1:输入:"Mr John Smith ", 13输出:"Mr%20John%20Smith"示例2:输入:" ", 5输出:"%20%20%20%20%20"------------------------------------------...原创 2020-05-29 21:51:03 · 427 阅读 · 0 评论 -
判断是否互为字符重排
给定两个字符串s1和s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。示例 1:输入: s1 = "abc", s2 = "bca"输出: true 示例 2:输入: s1 = "abc", s2 = "bad"输出: false-------------------------------------------------------------------------------------------------------------...原创 2020-05-28 23:37:16 · 501 阅读 · 0 评论 -
判断字符是否唯一
实现一个算法,确定一个字符串s的所有字符是否全部都不同?示例1:输入: s = "leetxcode"输出: false示例2:输入: s = "abc"输出: true-------------------------------------------------------------------------------------------------------------------------------------------------------------原创 2020-05-28 22:34:09 · 230 阅读 · 0 评论 -
平衡二叉树
https://blog.csdn.net/isunbin/article/details/81707606转载 2019-11-27 14:17:15 · 120 阅读 · 0 评论 -
数据结构 实现二叉树的遍历
数据结构中,实现二叉树遍历的方式有两种,一种是递归遍历,另外一种是非递归遍历。本文考虑非递归遍历的情况。在非递归遍历的实现中,需要构造一个链式栈来暂存树中节点,具体实现代码如下:// 二叉树的非递归实现#include<stdio.h>#include<stdlib.h>typedef struct BNode { char data; struc...原创 2019-11-26 16:40:20 · 165 阅读 · 0 评论 -
数据结构 实现二叉树的遍历
【二叉树的遍历】二叉树的遍历方式有四种: 前序遍历,中序遍历,后序遍历,层次遍历。其中前三种遍历方式二叉树常用的遍历方式。【代码实现遍历】当实现二叉树的遍历时,递归是实现前序遍历,中序遍历与后序遍历的最简单的方式,因为树的结构本身就是一种层次上不同,但结构是一致的,利用递归思想写出的代码简洁易懂。// 二叉树三种遍历递归实现#include<stdio.h>#in...原创 2019-11-26 15:14:40 · 181 阅读 · 0 评论 -
数据结构 栈
【栈的基本概念】当我们清楚了线性表的概念后,接着可以学习栈了。栈是一种运算受限的线性表。限定仅在表尾进行插入与删除操作的线性表。这一端被称为栈顶,相对地,把另外一端称为栈底。向一个栈掺入新元素的过程称为进栈、入栈或者压栈,它是将新元素放到栈顶元素上面,使之成为新的栈顶元素;从一个栈删除元素又称为出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。【栈的结构示意图】...原创 2019-11-26 10:11:38 · 179 阅读 · 0 评论 -
单向链表反转问题
下面内容来自: https://blog.csdn.net/blioo/article/details/62050967假设当前创建好的链表如下:首先让头结点与第一个元素节点断开,但是要注意在断开之前需要用p指针指向第一个元素节点来保存第一个元素节点位置,然后在断开。在这里有一个指针q指向一个指针域为空的节点,这个节点用来作为链表反转后的最后一个节点。让第二个元素节点的指针从...转载 2019-11-25 14:51:00 · 162 阅读 · 0 评论 -
数据结构 链表
https://www.cnblogs.com/notfound/p/8529692.html 【单链表】https://blog.csdn.net/qingzhuyuxian/article/details/81478043 【双向链表】https://www.cnblogs.com/dengfaheng/p/9245770.html 【循环链表】https://blog.csd...转载 2019-11-24 14:15:09 · 101 阅读 · 0 评论 -
线性表的顺序存储结构————顺序表(包含C语言和C++版本的完整程序)
https://blog.csdn.net/wanzhen4330/article/details/81627034转载 2019-11-24 12:07:51 · 227 阅读 · 0 评论 -
数据结构6 插入排序
数据结构中,相关资料显示,效率低的排序算法共有3种,分别为冒泡排序,选择排序,与插入排序。在其余的两篇博客中,我分别介绍了冒泡排序与选择排序,接下来介绍最后一种排序: 插入排序。相关资料显示,在实际开发的过程中,插入排序比其他两种排序更为常用。那么何为插入排序?那么上面基础的 插入排序代码如下(为了表达一般性,利用函数模板):#include<iostream>...原创 2019-11-21 18:36:41 · 137 阅读 · 0 评论 -
数据结构5 递归
【递归】递归是一种重要的编程思想,通常是指在函数的定义中使用函数自身的方法。也就是说,递归算法是一种直接或者间接调用自身函数或者方法的算法。递归算法的意义在于将问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解。下图展示的是一个简单的阶乘的递归调用实例:从上面递归调用图中可以得到一下结论:1. 我们可以将递归调用过程看做一个栈的数据结构,先调用的函数先入...原创 2019-11-19 19:27:53 · 248 阅读 · 0 评论 -
数据结构4 顺序查找与折半查找
【顺序查找 (针对无序的数据,有序的数据可以用更高效的数据查找方式)】在无序的数据查找中, 顺序查找是最入门、最简单的算法,该算法虽然简单,但是当数据量增多时,查找效率较低。比如在100万数据中,平均需要查找大约50万次,从算法角度来说,是很难接受的。从算法角度来说,很自然要考虑到算法的优化。经过查找相关,关于无顺序数据处理,在数据库中有对应处理方法,还有可以创建索引,哈希方式处理等,嗯,...原创 2019-11-19 16:15:15 · 1423 阅读 · 0 评论 -
数据结构3 选择排序
【选择排序】选择排序算法与冒泡排序算法在性质上差不多,选择排序比冒泡排序的性能稍微好一点。主要原因在于冒泡排序每次在比较时同时可能要交换数据,因交换次数过多,所以传统的冒泡算法时间复杂度高。选择排序与冒泡算法本质上不同是: 选择排序设置一个标志量,根据这个标志量,只在每次扫描最后交换一次数据,而不像冒泡排序不停交换数据。相比于冒泡排序,选择排序是一种不稳定的排序算法。如何理解选择算法的...原创 2019-11-19 12:42:33 · 130 阅读 · 0 评论 -
数据结构2 冒泡排序
【数据结构--冒泡排序】冒泡排序是数据结构的第一个算法,,也是最简单的一个排序算法。冒泡排序就是把小的元素往前调或者把大的元素往后调。相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,是不会再交换的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。【基本的冒泡...原创 2019-11-18 18:45:00 · 366 阅读 · 0 评论 -
数据结构1 完成两个数据交换
【数据结构开篇】我的数据结构比较差,所以一点点学习吧,时间不负有心人。--------------------------------------------------------------------------------------------------------------------------------【数据结构】 完成两个数据交换 完成两个数据的交换虽然简...原创 2019-11-18 16:17:02 · 352 阅读 · 0 评论
分享