自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 数据结构与算法-堆排序

数据结构与算法-堆排序堆排序什么是堆堆节点的访问堆排序的基本思路堆排序的步骤分解堆排序的实现代码堆排序 堆排序是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆的性质:即子节点的键值或索引总是小于(或者大于)它的父节点,堆排序的时间复杂度为O(nlogn)。(来自维基百科)什么是堆 堆是一种特殊的完全二叉树,它的性质为:任意节点大于等于或者小于等于它的左右节点。如果任意节点大于等于它的左右节点,此堆称为最大堆;反之,任意节点小于等于它的左右节点,此堆称为最小堆。

2020-10-12 10:21:21 122

原创 数据结构与算法-快速排序

快速排序在实际应用中使用广泛,效果也高。快排使用的是分治策略,一组序列基于某一个基准值分成两个大小的子序列,递归排序子序列,最终得到有序的序列。快排的平均时间复杂度为O(nlogn)。算法的实现步骤:1. 在序列中挑选一个基准值,我们可以默认第一个数为基准值2. 从两边的数值跟基准值作对比,数值小的放在基准值左边,数值大的放在基准值右边3. 递归将小于基准值的子序列和大于基准值的子序列排序例子:乱序序列:4,3,9,7,5,6,8,1圆圈1:原始序列圆圈2:以第一...

2020-10-11 16:16:07 208

原创 数据结构与算法-归并排序

归并排序的核心思想是使用分治的策略来进行排序。分治是将大问题分成一些小问题,小问题解决后在合并在一起。 我们来看一下这一排数据:9,4,5,1,2,7,3,8,6,0。算法流程大概就是以下图所示,将数组拆分,然后每一个小数组进行排序合并。 再看一下局部的两个小数组如何进行合并的,进行合并的两个红色数组里面的数已经是有序的,上图黑色框部分申请一个临时数据,存放排序后的结果。第一行:红色左边数组跟红色右边数组进行对比,小的就放入黑色的临时数组中第二...

2020-08-19 19:58:43 160

原创 数据结构与算法-递归

1. 什么是递归举一个例子:大学军训的时候,一个队伍,开头的人A想知道这个队伍一共有多少人,但是每个人只能通过旁边的交流,那如何统计呢?我们可以先找出最后一个人,A可以问旁边的人B是否为最后一个人,B又问下一个人,如此类推,等到了最后一个人,再将号码返回到第一个人A,每往前一个,号码上就+1,第一个人A就知道这个队伍有多少人了。公式:g(n)=g(n-1)+1;...

2020-04-06 22:52:10 250

原创 数据结构与算法-队列

队列的操作原理是先进先出,后进后出;队列也是一种运算受限的线性表,从队列的头部出列,从队列的尾部入列。队列基本用法:empty():如果队列为空返回true,否则返回falsesize():返回队列中元素的个数pop():删除队列首元素但不返回其值front():返回队首元素的值,但不删除该元素push(x) :在队尾压入新元素 ,x为要压入的元素b...

2019-10-11 17:00:30 167

原创 LeetCode_682-Baseball Game

给定一个字符串列表,字符串包含整数,’+’,’D’,’C’,整数代表一个分数,’+’代表后两个有效分数的和,’D’代表后一个有效分数的两倍,’C’代表删除后一个有效的分数值,最后求所有有效分数的和。例子:输入[“5”,”2”,”C”,”D”,”+”],输出30。2为无效的数,’D’是5*2,’+’是5*2+5,5+0+10+(10+5)= 30class Solution {publi...

2019-09-26 16:31:52 119

原创 LeetCode_844-Backspace String Compare

输入两个字符串S和T,字符串只包含小写字母和”#“,#表示为退格键,判断操作完退格键剩下字符串是否相等例子:S = “ab#c", T = "ad # c” 返回true,剩下的字符串是”ac“S = “ab##", T = "c # d # ” 返回true,剩下的字符串是”“class Solution {public: bool backspaceCompare(str...

2019-09-26 16:30:51 116

原创 LeetCode_155-Min Stack

栈的实现,多加了一个最小值的获取class MinStack {public: struct Node { int nNum; int nMinNum; Node* pNext; Node() { pNext = nullptr; } }; /** initial...

2019-09-26 16:29:45 116

原创 LeetCode_232-Implement Queue using Stacks

题意是使用栈实现队列;队列是先进先出,后进后出。class MyQueue {public: /** Initialize your data structure here. */ MyQueue() { //intput m_bSwap = true; } /** Push element x to the bac...

2019-09-26 16:28:28 101

原创 LeetCode_20-Valid Parentheses

给定一个字符串,其中包含字符’(’,’)’,’[’,’]’,’{‘,’}’,左括号必须匹配右括号,一对匹配的括号不能单独出现单个左括号或者右括号。如:(()[])有效,[(])无效空字符串也算是有效的。class Solution {public: bool isValid(string s) { int len = s.length(); stack&...

2019-09-26 16:26:33 81

原创 数据结构与算法-栈

1.栈的原理 后进先出(LIFO-last in first out):最后插入的元素最先出来,是一种“操作受限”的线性表,只允许在端插入和删除数据2.栈的实现 顺序栈:用数组实现,顺序栈需要动态扩容,在初始化时需要给定一个固定大小的数组,当栈大于固定大小时需要扩充数组的大小。template<class T>class MyArrayStack...

2019-09-24 14:24:16 95

原创 数据结构与算法-数组

数组是由相同类型的元素(element)的集合所组成的数据结构,分配一块连续的内存来存储。利用元素的索引(index)可以计算出该元素对应的存储地址。(维基百科)1. 存储结构 数组是线性表数据结构,定义数组时,系统会分配一份连续的内存空间来存储一组相同的类型的数据,如int num[n] ;2. 多维数组 数组定义为一维数组、二维数组、三维数组…n维数组,...

2019-09-20 20:25:05 260

原创 面试题一

题目:给你一个数组A[1..n],请你在O(n)的时间里构造一个新的数组B[1..n],使得B[i]=A[1]*A[2]*...*A[n]/A[i]。你不能使用除法运算。解法一:最简单的一种方法,时间复杂都就是O(n^2),直接模拟出B[1..n]。#define YE#include#includeint A[10010];int B[10010];int main

2014-02-27 23:24:12 665

原创 UVA 10881

题意:一条长L厘米的木棒,上有N只蚂蚁,有的向左爬,有的向右爬,速度为1厘米/秒。如果向碰撞了就往返方向爬,左为L,右为R。求T秒后每只蚂蚁的位置。题解:先排序,把蚂蚁的位置记录下来。如果蚂蚁相撞了,就当作两只蚂蚁直接穿过。排序后直接加上T,因为排序后的蚂蚁编号已经固定了,不过怎样爬动,都是在木棒上的第i只。//#define YE#include#include#include

2013-09-17 19:58:50 432

原创 HDU 1710 Binary Tree Traversals

题意:知道二叉树的前序、中序的序列,求数的后序序列。解法:用递归求解,前序第i个在中序中找到位置,再递归分左右树。//#define YE#include#includeint s1[1001],s2[1001];int k=0;int n;int count=0;void find(int x,int y){ int i; if(x>y) { ret

2013-09-16 22:21:50 585

原创 UVALIVE 3644

题意:有一些化学物品,有a元素和b元素组成,如果有相同的元素的化学物品就不能装车,求没有装车的化学物品数。题解:简单的并查集,直接模板。//#define YE#include#includeint fa[100005];void init(){ int i; for(i=0;i<=100000;i++) { fa[i]=i; }}int find(in

2013-09-16 21:16:09 746 2

原创 UVA 11300

题意:圆桌旁有n个人,每个人手上都有x个金币,相邻的人才能交换Ai金币,使交换后金币数每个人都相同。求最少交换金币数。题解:ave为每个人相同的金币数,第1个人给第n个人金币x1,第2个人给第1个人金币x2……推出:A1-x1+x2=ave,A2-x2+x3=ave,……,An-xn+x1=ave x2=ave-A1+x1,x3=ave-A2+x2,……,x1=ave-An+xn

2013-09-16 18:07:03 605

原创 UVA 11729

题意:有n个部下,第i个部下需要你花x分钟来交代任务,然后用y分钟去完成。你选择交代任务顺序,使所有任务完成所花的时间最小。每次只能交代一个任务。解法:将完成任务时间由长到短排序。第i个与i+1个比较完成任务的时间和交代任务的时间取最长。贪心法求解。//#define YE#include#includeusing namespace std;struct node{

2013-09-15 22:16:16 619

原创 UVA 11292

题意:有m个骑士,n头的龙,一个能值为x的骑士可以砍掉恶龙一个直径不超过x的头,且需要支付x的金币。砍掉龙的所有头支付最少的金币。一个人只能砍一个头。无解输出“Loowater is doomed!”。解法:将龙的头和骑士排序,骑士能力值小的砍掉头直径小的。#include #include using namespace std;const int maxn = 20005;

2013-09-15 21:52:50 619

转载 怎么将vim修改像vc++自动换行缩进

找到/etc/vimrc文件在文件,用vim将其打开,在此文件里面修改1)设置制表符宽度为4:set tabstop=4set softtabstop=42)设置缩进的空格数为4set shiftwidth=43)设置自动缩进:即每行的缩进值与上一行相等;使用 noautoindent 取消设置:set autoindent4)设

2013-09-15 21:09:07 1053

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除