数据结构与算法
WJsuperrunner
学无止境
展开
-
最基本最常用的排序算法汇总
1.基本的排序算法冒泡排序( Bubble Sort)插入排序(Insertion Sort)2.常考的排序算法归并排序( Merge Sort )快速排序(Quick Sort )拓扑排序(Topological Sort)3.其他排序算法堆排序(Heap Sort)桶排序(Bucket Sort)注意:1,冒泡排序和插入排序是最基础的,面试官有时候喜欢拿它们来考察你的基础...原创 2020-02-25 21:36:19 · 367 阅读 · 0 评论 -
YUV文件转RGB并保存为bmp格式
本文YUV文件以YUV420为例。原创 2019-11-01 22:01:27 · 545 阅读 · 0 评论 -
网易内推题,合唱团,C++实现
有 n 个学生站成一排,每个学生有一个能力值.牛牛想从这 n 个学生中按照顺序选取 k 名学生. 要求相邻两个学生的位置编号的差不超过 d,使得这 k 个学生的能力值的乘积最大,你能返回最大的乘积吗?输入描述:每个输入包含 1 个测试用例。每个测试数据的第一行包含一个整数 n (1 <= n <= 50),表示学生的个数,接下来的一行,包含 n 个整数,按顺序表示每个学生的能...转载 2018-08-22 10:07:36 · 237 阅读 · 0 评论 -
2019阿里校招测评题(编程)
明小学的小朋友们要举行一年一度的接力跑大赛了,但是小朋友们却遇到了一个难题:设计接力跑大赛的线路,你能帮助他们完成这项工作么?光明小学可以抽象成一张有N个节点的图,每两点间都有一条道路相连。光明小学的每个班都有M个学生,所以你要为他们设计出一条恰好经过M条边的路径。光明小学的小朋友们希望全盘考虑所有的因素,所以你需要把任意两点间经过M条边的最短路径的距离输出出来以供参考。你需要设计这样一个...原创 2018-08-01 10:45:13 · 6652 阅读 · 0 评论 -
翻转字符串和左旋转字符串
/*翻转字符串*//* “I am a student.”变为“student. a am I”。*/class Solution {public: string ReverseSentence(string str) { if (str.empty()) return str; reverse(str.begin(), str.end()); string::iterato...原创 2018-07-19 10:48:52 · 237 阅读 · 0 评论 -
二叉树序列化
//非递归class Codec {public: // Encodes a tree to a single string. string serialize(TreeNode* root) { string val; if(root) { val+=getstring(root->val)+"!...原创 2018-07-12 15:53:51 · 525 阅读 · 0 评论 -
岛屿的个数
给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010000011输出: 3class Solution {pu...原创 2018-09-09 15:29:02 · 466 阅读 · 0 评论 -
翻转链表II
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL关键问题在于寻找几个关键节点。class Solution {public:Lis...原创 2018-08-16 12:48:05 · 165 阅读 · 0 评论 -
两个队列实现栈与两个栈实现队列
#include<iostream>#include <queue>//两个队列实现栈using namespace std;class Solution{public: void push(int data) { if (!queue1.empty()) queue1.push(data); else if (!queue2.empty()...原创 2018-08-02 13:58:52 · 109 阅读 · 0 评论 -
Huffman树和哈夫曼编码
原创 2018-08-14 13:52:29 · 170 阅读 · 0 评论 -
数据流中的中位数
//动态维护一个最大堆和一个最小堆,最大堆存储一半数据,最小堆储存一半数据;//维护最大堆堆顶元素小于最小堆堆顶元素。//若两个堆的元素相同,中位数为最大堆和最小堆堆顶元素的平均值;//若最大堆和最小堆谁的元素多,中位数就为较多元素堆的堆顶元素。 class Solution {public: void Insert(int num) { if (big...原创 2018-07-14 13:37:50 · 104 阅读 · 0 评论 -
最小的k个数
维护一个人k个大小的优先队列(大根堆)class Solution {public: vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { vector<int> result; if (input.empty() || k <= 0 || k>input.siz...原创 2018-07-13 10:27:17 · 111 阅读 · 0 评论 -
与数组初始状态无关的内排序算法
与数组初始状态无关的内排序算法非常感些 清风吹斜阳的总结,原文地址:http://www.cnblogs.com/Xieyang-blog/p/8340578.html首先,与初始状态无关分为几种情况1、算法复杂度与初始状态无关;2、元素总比较次数与初始状态无关;3、元素总移动次数与初始状态无关。【其实还有一种就是总排序趟数与初始状态无关,由于分析简单,除了快速排序的排序次数(递归深度)与关键字...转载 2018-03-14 08:43:33 · 4191 阅读 · 4 评论