- 博客(16)
- 资源 (3)
- 收藏
- 关注
转载 随机函数的rand、srand用法
我们知道rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是 根据一个数,我们可以称它为种了,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正 的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统。为了改变这个种子的值,C提供了 srand()函数,它的原形是void srand( ...
2019-04-18 10:47:01 5188
原创 215. 数组中的第K个最大元素
在未排序的数组中找到第k个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。快速排序类似,递归与...
2019-04-18 10:40:14 165
原创 38. 除自身以外数组的乘积
给定长度为n的整数数组nums,其中n> 1,返回输出数组output,其中output[i]等于nums中除nums[i]之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]说明:请不要使用除法,且在O(n) 时间复杂度内完成此题。进阶:你可以在常数空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的...
2019-04-17 23:31:10 82
原创 292. Nim游戏
你和你的朋友,两个人一起玩Nim游戏:桌子上有一堆石头,每次你们轮流拿掉1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: false 解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛; 因为无论你拿走 1 块、2 块 还是 3...
2019-04-17 23:30:20 221
原创 89. 格雷编码
格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数n,打印其格雷编码序列。格雷编码序列必须以 0 开头。示例 1:输入:2输出:[0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的n,其格雷编码序列并不唯一。例如,[0,2,3,1]也是一个有效的格雷编码序列。00 ...
2019-04-17 23:28:36 94
原创 557. 反转字符串中的单词 III
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例1:输入: "Let's take LeetCode contest"输出: "s'teL ekat edoCteeL tsetnoc"注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。class Solution {public: string...
2019-04-17 23:27:00 83
原创 148. 排序链表
在O(nlogn) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5归并排序/** * Definition for ...
2019-04-17 23:25:41 96
原创 C++中的NULL和nullptr的区别
如果使用 nullptr 初始化对象,就能避免 0 指针的二义性的问题。NULL在C语言中被定义为#define NULL ((void *)0)NULL在c++中被定义为#ifdef __cplusplus#define NULL 0#else#define NULL ((void *)0)#endif而void *任何类型的指针都可以直接赋值给它,无需进行...
2019-04-17 21:42:42 514
原创 LCA算法
Tarjan算法不论咱们所面对的二叉树是二叉查找树,或不是二叉查找树,都可以把求任意两个结点的最近公共祖先,当做是查询的问题,如果是只求一次,则是单次查询;如果要求多个任意两个结点的最近公共祖先,则相当于是批量查询。涉及到批量查询的时候,咱们可以借鉴离线处理的方式,这就引出了解决此LCA问题的Tarjan离线算法。2.1、什么是Tarjan算法Tarjan算法 (以发现者Rober...
2019-04-12 09:28:30 2195
原创 tiny++的编译原理实践
首先将tm.c的运行得到tiny虚拟机GLOBALS.HMAIN.CUTIL.HUTIL.CSCAN.HSCAN.CPARSE.H...
2019-04-04 22:28:58 1473
原创 c++多线程和并发编程学习
thread t(foo, i);void foo(int i){ ....}这样就产生了一个线程detach和joinC++有两种方式来等待线程结束detach在这里表示启动的线程自己在后台运行,当前的代码继续运行,不等待新的线程结束 join的方式实在线程运行完成后再继续往下运行,所以如果对之前的代码再做修改如下比如t.detach();t.j...
2019-04-03 15:29:25 514
原创 25. k个一组翻转链表
给出一个链表,每k个节点一组进行翻转,并返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么将最后剩余节点保持原有顺序。示例 :给定这个链表:1->2->3->4->5当k= 2 时,应当返回:2->1->4->3->5当k= 3 时,应当返回:3->2->...
2019-04-03 15:14:24 105
原创 30. 串联所有单词的子串
30. 串联所有单词的子串给定一个字符串s和一些长度相同的单词words。找出s中恰好可以由words中所有单词串联形成的子串的起始位置。注意子串要与words中的单词完全匹配,中间不能有其他字符,但不需要考虑words中单词串联的顺序。class Solution {public: vector<int> findSubstring...
2019-04-03 15:12:58 179
原创 c++无符号整数的一点笔记
1. 在c++中,如果赋值给无符号类型一个超过它表示范围的值(如负数),结果是初始值对无符号类型表示数值最大值取模后的余数。2. 在c++中,如果表达式中同时有无符号类型和有符号类型,会默认将有符号类型转换为无符号类型进行运算,运算结果也是无符号类型。b是一个vector比如当使用int i=a-b.size();如果a<b.size时候,i会变成一个非常大的数字...
2019-04-03 15:11:09 1416
原创 n 皇后问题
n皇后问题研究的是如何将n个皇后放置在n×n的棋盘上,并且使皇后彼此之间不能相互攻击。给定一个整数n,返回所有不同的n皇后问题的解决方案。每一种解法包含一个明确的n皇后问题的棋子放置方案,该方案中'Q'和'.'分别代表了皇后和空位。class Solution {public: void fun(vector<vector<...
2019-04-03 15:08:00 103
原创 68. 文本左右对齐
68. 文本左右对齐给定一个单词数组和一个长度maxWidth,重新排版单词,使其成为每行恰好有maxWidth个字符,且左右两端对齐的文本。你应该使用“贪心算法”来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格' '填充,使得每行恰好有maxWidth个字符。要求尽可能均匀分配单词间的空格数量。如果某一行单词间的空格不能均匀分配,则左侧放置的空格数...
2019-04-03 15:06:10 130
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人