自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 生成N个不重复的随机数

问题描述:给定一个正整数n,需要输出一个长度为n的数组,数组元素顺序随机分布,范围为0 – n-1,且元素不能重复。 解决思路: 1)、声明一个数组N[n],并赋初值{0、1、2、3、……、n-1}; 2)、设一变量“m=n-1”; 3)、生成[0,m]间的随机数“x”,将N[x]与N[m]元素互换; 4)、对“m”做“m=m-1”,并返回到“3)”,直到“m=0”; 5)、完成上述操...

2018-10-10 23:11:49 4407

原创 linux小知识点

>:  会重写文件,如果文件里面有内容会覆盖。>>: 这个是将输出内容追加到目标文件中。如果文件不存在,就创建文件。就是如果文件里面有内容会把新内容追加到文件尾。$# 是传给脚本的参数个数$0 是脚本本身的名字$1 是传递给该shell脚本的第一个参数$2 是传递给该shell脚本的第二个参数$@ 是传给脚本的所有参数的列表$* 是以一个单字符串显示所有向脚本传...

2018-10-09 18:59:21 279

原创 快速幂

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。将任何一个数二分直至等于1的方法:偶数时除以2,奇数时减1或者加1.  如9-8-4-2-1,以及 14-7-6-3-2-1. 快速幂就是这个思想,它把b^n拆成(b^(n/2))*(b^(n/2)).从而实现跳跃式叠次方。常规求幂:double Power(double ...

2018-10-08 08:11:03 284

原创 数组中的逆序对(分治、递归与合并)

在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的数字数据范围: 对于%50的数据,size<=10^4 对于%75的数据,size<=10^5 对于%100的数据,si...

2018-10-07 20:32:36 662

原创 滑动窗口系列题目

滑动窗口的最大值给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4...

2018-10-07 05:33:31 1499

原创 【LeetCode41】First Missing Positive

Given an unsorted integer array, find the smallest missing positive integer.Your algorithm should run in O(n) time and uses constant extra space.题意:求一个数组中最小的缺失正数。要求O(n)的时间复杂度和O(1)的空间复杂度。Example ...

2018-10-04 18:21:27 128

原创 【LeetCode 135】Candy

There are N children standing in a line. Each child is assigned a rating value.You are giving candies to these children subjected to the following requirements:Each child must have at least one can...

2018-10-04 17:11:59 171

原创 【LeetCode 745】Prefix and Suffix Search

Given many words, words[i] has weight i.Design a class WordFilter that supports one function, WordFilter.f(String prefix, String suffix). It will return the word with given prefix and suffix with ...

2018-10-04 10:18:43 350

原创 【LeetCode 174】Dungeon Game

The demons had captured the princess (P) and imprisoned her in the bottom-right corner of a dungeon. The dungeon consists of M x N rooms laid out in a 2D grid. Our valiant knight (K) was initially p...

2018-10-04 08:18:43 162

原创 【LeetCode 321】Create Maximum Number

Given two arrays of length m and n with digits 0-9 representing two numbers. Create the maximum number of length k <= m + n from digits of the two. The relative order of the digits from the same...

2018-10-04 06:46:11 410 1

原创 C++中的 引用&

引用的概念引用:就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名;例:char ch;       char &rp=ch;1) 引用仅是变量的别名,因此引用本身并不占用内存,而是和目标变量共同指向目标变量的内存地址.2)表达式中的取地址符&不再是取变量的地址,而是用来表示该变量是引用类型的...

2018-10-04 05:30:42 258

原创 【LeetCode 002】Add Two Numbers

You are given two non-empty linked lists representing two non-negative integers.The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return...

2018-10-02 11:18:18 118

原创 类数组的初始化

struct Point { int x, y; Point(int _x, int _y) :x(_x), y(_y) { cout<<"create new Point 2"<<endl; } Point(int _x) :x(_x) { cout << "create new Point 1" << endl; }}; 对于单...

2018-10-02 08:39:22 9562

原创 【LeetCode 001】Two Sum

Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the sam...

2018-10-02 07:31:19 108

原创 【数据库】事务、事务的四大特性(ACID)、三大并发问题、四种锁、四大隔离级别以及它们的实现

数据库事务事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。(数据库引擎innoDB是支持事务的(默认每一条sql语句为一个事务),MyISAM不支持事务。)在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句或整个程序。  开始事务:BEGIN TRANSACTION(事务) 提交事...

2018-09-20 22:10:18 3094

原创 前缀树( 又名:TRIE树、单词查找树、字典树) 和 后缀树(Suffix树)

概念前缀树:将海量字符串存储在一棵树中。后缀树:将一个字符串分解成一棵树。前缀树  节点的结构体:struct trieNode { bool isEnd;//是否可以作为字符串的终结节点 trieNode *child[26];}前缀树:class Trie {private: trieNode *root;public: Trie()...

2018-09-12 21:51:39 1154

转载 最小生成树的两个算法之二:kruskal算法

介绍kruskal算法之前需要了解一个很重要的数据结构:并查集  参考博文:https://www.cnblogs.com/yoke/p/6697013.html基本概念树(Tree):如果一个无向连通图中不存在回路,则这种图称为树。生成树 (Spanning Tree):无向连通图G的一个子图如果是一颗包含G的所有顶点的树,则该子图称为G的生成树。生成树是连通图的极小连通子图。这里所谓...

2018-09-11 22:08:54 227

转载 并查集 union find

https://www.cnblogs.com/hapjin/p/5478352.htmlhttps://segmentfault.com/a/1190000004023326关于并查集的基本概念,可以参考这篇通俗有趣的博文:https://blog.csdn.net/u013546077/article/details/64509038并查集的数据结构(父节点数组+两个函数)并查...

2018-09-11 21:33:48 415

原创 跳表

1

2018-09-07 21:45:11 139

原创 最小比较次数问题的通用解法

题目:从N个无序数中找到最大数(或者:最大数和最小数、最大的前K个数),需要的最小比较次数。思路:用递归公式。设N个数所需要的比较次数为F(N), 将比较过程划分成更小的部分。求递推公式的解。划分的第一步永远是:分成N/2组一对一比较,形成两大阵营:胜者组和败者组。题目一:从N个无序数中找到最大数先分成N/2个胜者和N/2个败者,需要N/2的比较次数。然后从N/2规模的胜者组中找到...

2018-09-07 00:28:22 1661

原创 约瑟夫环问题

题目:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为1的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常,我们会要求输出最后一位出列的人的序号。那么这里主要研究的是最后一个出列的人的序号要怎么确定。首先,数组写成以0开头更便于计算,所以后面的分析都是以0开头的。原理(缺)htt...

2018-09-05 12:12:52 865 2

原创 A/B/C类ip地址 掩码 广播地址 路由汇集 保留地址

IP地址由两部分组成,即网络地址和主机地址。网络地址表示其属于互联网的哪一个网络,主机地址表示其属于该网络中的哪一台主机。二者是主从关系。不同网络地址之间的主机不能直接通信! IP地址的四大类型标识的是网络中的某台主机。IPv4的地址长度为32位,共4个字节,但实际中我们用点分十进制记法。IP地址根据网络号和主机号来分,分为A、B、C三类及特殊地址D、E。    全0和全1的都保留不用。  ...

2018-09-04 17:18:21 5945

原创 表的六大约束

NOT NULL - 指示某列不能存储 NULL 值。 UNIQUE - 保证某列的每行的值必须唯一。(即不同行的该值必须不同,允许NULL,且表可以有多个UNIQUE约束。) PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。 FOREIGN KEY - 保证一个表中的数据匹配另...

2018-09-04 10:15:50 561

原创 一个有10个指针的数组,该指针指向一个函数,该函数有一个整形参数并返回一个整型数(数组指针 指针数组)

依照题意依次写出即可:一个有10个指针的数组:*a[10];该指针指向一个函数:(*a[10])();该函数有一个整形参数: (*a[10])(int);并返回一个整型数: int (*a[10])(int)所以int (*a[10])(int)就是答案。阅读这种表达式的时候可以遵循以下的规则:从右向左,由近及远,括号优先;比如从a符号开始。其右边是[10],说明a是个数组...

2018-09-04 05:10:10 25982 1

转载 进程的内存分布

参考博文:https://blog.csdn.net/qq_26685951/article/details/76920326  一个进程的内存主要分为五部分:text(文本/代码段),initialize data(数据段),uninitialized data(未初始化数据段),heap(堆),stack(栈),如下图: 1.文本段也叫代码段,是对象文件或内...

2018-09-04 04:50:39 5585

原创 理解递归函数/DFS函数的方法

对于递归函数或者深搜函数,有时候因为其调用本身的性质所以会难以理解。以如下dfs函数为例:void dfs(...){ //外部dfs if(...) {...} for(...){ ...; dfs(...); //内部dfs ...; }}要想在遇到深搜问题时很快写出dfs(),只记模板是不行的,需要理...

2018-09-01 01:35:15 9811

原创 位于同一直线上的点(2D/3D)

题目一:给定N个二维坐标点(包含整形x,y),找到位于同一条直线上点的最大个数。 题目二:给定N个三维坐标点(包含整形x,y,z),找到位于同一条直线上点的最大个数 。思路:双循环O(N^2)。 先找第一个点 i ,把它固定住,计算出剩余所有点 j 与它的连线斜率,凡是斜率相同的都是共线的点。统计所有出现过的斜率,次数最高的斜率也对应了“穿过点 i 并且共线点最多的那条线” 。 然后再找下...

2018-08-31 05:00:58 1230 1

原创 和等于M的所有组合(DFS)

题目:输入两个整数 n 和 m,从数列1,2,3.......n 中随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来(输出顺序为字典顺序)变量:当前深搜下标begin, 当前路径数组 path, 当前路径之和sum(或者当前剩余sum).输出所有解,所以dfs为void型,并且需要一个解答采集的数组vector<vector<int>> result....

2018-08-30 18:22:29 869

原创 algorithm.h 中的一些很好用的函数

string str; int nums[n];注意:除了swap, 下面所有函数的参数均为指针类型,且末指针是操作区域末尾再后面一位的指针。可以用p+a来作为下标使用。reverse(str.begin(),str.end()) 实现字符串的全部翻转;reverse(arr.begin(),arr.end()) 实现STL数组的翻转;reverse(str.begin()+a,str...

2018-08-30 14:55:52 2200

原创 getline(cin,str,'#')

获取以#之前的所有输入。

2018-08-30 14:55:43 202

原创 最长公共子序列(LCS)问题 和 它的几个衍生:最长递增子序列/增删回文串/增删平方串

1

2018-08-30 07:44:08 139

原创 关于DFS的几个讨论

 下面内容是我这几天求解DFS相关题目过程中困扰自己的几个点。递归函数的参数与全局变量的转化DFS是递归函数的一种。对于所有的递归函数,它们的函数体内会调用自身。既然函数体是完全一样的,那么这种自身的调用要想收敛就必须是参数变量有所推进。比如求解字符串相关问题时推进的是下标,从0开始,一直搜索到str.size(),再比如数独问题,推进的是行与列。对于大多数递归函数,这些变量参数都...

2018-08-30 03:36:35 1615 1

原创 数独求解(DFS)

题目:数独是一个我们都非常熟悉的经典游戏,运用计算机我们可以很快地解开数独难题,现在有一些简单的数独题目,请编写一个程序求解。思路:从9×9的数独矩阵的第一格开始,一直求解到最后一格。 每一格都遍历 1~9 这9种数字,并且检查是否合法,如果合法就继续下一格。变量:数独矩阵sudoku[9][9],以及当前求解的下标num. (行num/9, 列num%9),数独矩阵定义成全局变量,下标作...

2018-08-30 02:29:05 1024 1

原创 输入输出流的控制关键字

一、进制hex 十六进制int x;cin>>hex>>x;将输入看作十六进制并转化成十进制赋值给x。当输入不符合十六进制格式时(如9A3T),就会出错。例如:输入12,那么这个12会被看作十六进制,换算成十进制就是18,所以x=18.    再比如输入 0x1C, 那么这个字符串会被看作十六进制数,换算成十进制是28,所以x=28.   oct (...

2018-08-28 15:57:25 303

转载 数列找规律填写下一项[725题]

原贴:http://blog.sina.com.cn/s/blog_6a7a84040101aoze.html数字推理题725道详解     【1】7,9,-1,5,( )A、4;B、2;C、-1;D、-3分析:选D,7+9=16; 9+(-1)=8;(-1)+5=4;5+(-3)=2 , 16,8,4,2等比 【2】3,2,5/3,3/2,( )A、1/4;B、7/5...

2018-08-28 11:52:50 28473

原创 用数字组成数的种类个数

题目:用 0,1,2,3,4,5 组成没有重复数字的四位数,其中千位数字大于百位数字且百位数字大于十位数字的四位数的个数是多少?思路:从六个数字中选取三个作为千百十位,因为有大小限制,所以他们之间的顺序一旦选定后就是固定的了。共C(3,6)种取法。再从剩下的三个数中选择一个作为个位,有C(1,3)种取法。  共C(3,6)*C(1,3)=60种.红字部分很难想到~  另外本题不需要去管0作...

2018-08-28 05:52:37 1549

转载 哈夫曼树 和 树的带权路径长度

树的带权路径长度(Weighted Path Length of Tree):定义为树中所有叶结点的带权路径长度之和。结点的带权路径长度:结点到树根之间的路径长度与该结点上权的乘积。哈夫曼树是一种带权路径长度最短的二叉树,也称为最优二叉树。 哈夫曼树构建教程 https://blog.csdn.net/xueba8/article/details/78477892例:对于给定的一...

2018-08-28 04:37:41 19745 5

原创 *p++

题目:在 VS编译器以下程序的输出结果是  1 2 3 char s[] = "123", *p;  p = s;  printf("%c\n", *p++); 从优先级上讲,自增操作符++ 高于 *,所以 *p++ 等同于 *(p++)。也就是先取出 p 所对应地址处的值,然后让 p++.等同于 x=y++, 先把y...

2018-08-28 04:21:29 477

转载 Catalan(卡特兰)数【更多相关问题】

原贴:https://www.cnblogs.com/yaoyueduzhen/p/5456490.html 1、给定n个数,有多少种出栈序列?2、饭后,姐姐洗碗,妹妹把姐姐洗过的碗一个一个放进碗橱摞成一摞。一共有n个不同的碗,洗前也是摞成一摞的,也许因为小妹贪玩而使碗拿进碗橱不及时,姐姐则把洗过的碗摞在旁边,问:小妹摞起的碗有多少种可能的方式?3、一个有n个1和n个-1组成的字串...

2018-08-28 03:20:38 251

原创 Catalan(卡特兰)数 [N个数有多少种出栈顺序?]

卡特兰数的定义:令h(0)=1,h(1)=1,Catalan数满足递归式:h(n) = h(0)*h(n-1) + h(1)*h(n-2) + ... + h(n-1)*h(0)  (n>=2)该递推关系的解为:h(n) = C(2n,n)/(n+1)=C(2n,n)-C(2n,n-1),n=0,1,2,3,... (其中C(2n,n)表示2n个物品中取n个的组合数) 题...

2018-08-28 03:18:58 562

空空如也

空空如也

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

TA关注的人

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