剑指offer
文章平均质量分 57
Today,Hello world,Tomorrow,Reform the world..
平头哥阿威
coding....
展开
-
【数据结构】数据结构常见链表面试题剖析(上)
反转链表定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。来自:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof//** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} *原创 2021-07-31 18:36:21 · 179 阅读 · 0 评论 -
C++服务器项目概述
项目代码:https://github.com/xiaoweixiao/HTTP原创 2019-02-13 17:07:00 · 3501 阅读 · 0 评论 -
Go语言实现简单的聊天程序
服务器package mainimport ( "bufio" "fmt" "net" "os")func log(msg string, err error) { fmt.Println(msg, err) os.Exit(-1)}func work(sock net.Conn) { for { var buf [1024]byte n, err := ...原创 2020-03-10 11:44:34 · 927 阅读 · 0 评论 -
Golang语言map的应用
文章目录统计一个字符串中的单词数目采用map实现成绩管理统计一个字符串中的单词数目package mainimport ( "fmt" "strings")func main() { //统计一个字符串中的单词数目 str := "I am xiaoming, I am 12 years old. \ I like eat noodles and I'd like to p...原创 2020-03-02 13:28:17 · 194 阅读 · 0 评论 -
Golang学生成绩管理系统
package mainimport ( "fmt" "os")type student struct { name0 string num0, score0 int}func newStudent(name string, num, score int) *student { //模拟student的构造函数 return &student{ ...原创 2020-03-02 10:29:40 · 1214 阅读 · 0 评论 -
1.两数之和--2. 两数相加--3. 无重复字符的最长子串
文章目录1.两数之和26. 删除排序数组中的重复项35. 搜索插入位置1.两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + ...原创 2020-02-29 21:18:14 · 210 阅读 · 0 评论 -
删除链表的倒数第n个节点---正则表达式匹配---两两交换链表中的节点
文章目录删除链表的倒数第n个节点正则表达式匹配删除链表的倒数第n个节点给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?/** ...原创 2020-02-28 16:22:52 · 231 阅读 · 0 评论 -
剑指offer(16~18)--合并两个有序的链表--树的子结构--二叉树的镜像
16、合并两个排序的列表输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。思路分析牛客网链接/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {publi...原创 2019-01-18 13:23:16 · 819 阅读 · 0 评论 -
剑指offer(10~12)--矩形覆盖--二进制中1的个数--数值的整数次方
文章目录10、矩形覆盖11、二进制中1的个数12、数值的整数次方10、矩形覆盖我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?思路分析:归纳得出结论,第2*n的大矩形可以由2*(n-1)的矩形的基础上加一个1*2的小矩形,或者由2*(n-2)的矩形的基础之上加2个2*1。class Solution {pu...原创 2019-01-18 13:21:38 · 981 阅读 · 0 评论 -
剑指offer(4~6)--重建二叉树--用两个栈实现一个队列--旋转数组的最小数字
4、重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路分析在二叉树的前序遍历序列中,第一个数字总是树的根结点的值。但在中序遍历序列中,根结点的值在序列的中间,左子树的结点的值位于根结点的值的左边,...原创 2019-01-18 13:16:34 · 1426 阅读 · 0 评论 -
剑指offer(13~15)--调整数组顺序使奇数位于偶数前面--链表中倒数第k个节点--反转链表
13、调整数组顺序使奇数位于偶数前面输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路分析:定义两个下标,一个由前向后找偶数,另一个由后向前...原创 2019-01-18 09:03:18 · 1146 阅读 · 0 评论 -
剑指offer(7~9)--斐波那契数列--跳台阶--变态跳台阶
Number 1大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39牛客网做题链接class Solution {public: int Fibonacci(int n) { }};思路1:根据斐波那契规则,第n个数等于n-1和n-2之和,第0项是0,第一项是1。0 1 1 2 3 5原创 2019-01-05 21:45:53 · 941 阅读 · 0 评论 -
剑指offer(1~3)--二维数组中的查找--替换空格--从尾到头打印链表
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。class Solution {public: bool Find(int target, vector&原创 2018-12-10 12:51:02 · 2668 阅读 · 2 评论 -
剑指offer(28~30)数组中出现次数超过一半的数字--最小的K个数--连续子数组的最大和
文章目录数组中出现次数超过一半的数字最小的K个数数组中出现次数超过一半的数字数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。class Solution {public: int MoreThanHalfNum_Solut...原创 2019-02-17 18:25:50 · 789 阅读 · 0 评论 -
剑指offer(25~27)复杂链表的复制--二叉树与双向链表--字符串的排列
25、复杂链表的复制输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)思路分析大致分三步1)复制旧链表节点:将旧链表的节点一个个复制后插入到新链表,像下图那样,A是旧节点,A’是新节点。2)置random指向:如上图所示,旧...原创 2019-02-07 19:33:40 · 927 阅读 · 0 评论 -
剑指offer(22~24)二叉树层序遍历--二叉树的后序遍历序列--二叉树中和为某一值得路径
22、二叉树层序遍历从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路分析先使用队列来存储节点,然后取队头节点,判断这个节点左孩子是否为空,不为空,push左孩子进队列,,判断这个节点右孩子是否为空,不为空,push右孩子进队列,最后将队头节点数据直接push进vector,pop掉对头顺序。/*struct TreeNode { int val; struct TreeNo...原创 2019-01-23 10:57:26 · 1152 阅读 · 1 评论 -
剑指offer(19~21)--顺时针打印矩阵--包含min函数的栈--栈的压入弹出序列
文章目录19、20、包含min函数的栈21、栈的压入弹出序列19、20、包含min函数的栈定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。用一个m栈来存储最小数,每次插入数据都与m栈的栈顶数据比较,实时更新m栈顶,使m栈顶一直是那个时候整个栈中最小的数据。pop栈s栈顶数据时候,如果s栈顶数据和栈顶数据相等,那么说明整个最小数据要po...原创 2019-01-22 08:55:50 · 803 阅读 · 0 评论 -
剑指offer(43~45)左旋转字符串--翻转单词顺序列--扑克牌顺子
左旋转字符串汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!class Solution {public: string LeftRotateS...原创 2019-03-31 17:58:58 · 559 阅读 · 0 评论 -
剑指offer(34~36)第一个只出现一次的字符--数组中的逆序对--找两个链表的公共结点
文章目录第一个只出现一次的字符数组中的逆序对输入两个链表,找出它们的第一个公共结点。第一个只出现一次的字符在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).笨方法无论你有多少字符,所有字符都会有对应的ASCLL码值,在0~255区间。所以我开辟一个255的数组大小,元素初始值都为0,遍历字符串,将字符的ASCLL码值对应下标的值++,用来统计该字符的次数。class Solution {原创 2019-03-31 15:58:43 · 616 阅读 · 0 评论 -
剑指offer(40~42)数组中只出现一次的数字--和为S的连续正数序列--和为S的两个数字
文章目录数组中只出现一次的数字和为S的连续正数序列和为S的两个数字数组中只出现一次的数字一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。思路分析1:可以应对数组元素相对集中的实例我采用辅助数组存储每一个数字出现的次数,然后遍历辅助数组,找出出现一次的元素。思路简单,复杂度O(n)O(n)O(n),但是如果这个数组的的最大值很大,是0x7F FF...原创 2019-03-24 16:58:24 · 582 阅读 · 0 评论 -
剑指offer(37~39)数字在排序数组中出现的次数--二叉树的深度--平衡二叉树
文章目录数字在排序数组中出现的次数二叉树的深度平衡二叉树数字在排序数组中出现的次数统计一个数字在排序数组中出现的次数。思路分析:排序数组,自然想到二分查找,如果k<data[mid]k<data[mid]k<data[mid],那么kkk存在于[0,k)[0,k)[0,k)区间内;如果k>data[mid]k>data[mid]k...原创 2019-03-24 00:00:57 · 517 阅读 · 0 评论 -
剑指offer(31~33)从1 到 n 中1出现的次数--把数组排成最小的数--丑数
整数中1出现的次数(从1到n整数中1出现的次数)求出113的整数中1出现的次数,并算出1001300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。class Solution {pu...原创 2019-03-21 20:19:59 · 562 阅读 · 0 评论 -
58对称的二叉树--59按之字形顺序打印二叉树--60把二叉树打印成多行
58对称的二叉树请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。二叉树一般都需要采用递归思路一棵树的左子树和右子树都不存在或者左子树和右子树存在且值相等,它符合对称的规则。一颗树的左子树的左节点需要和右子树的右节点保持对称原则,左子树的右节点需要和右子树的左节点保持对称规则。/*struct TreeNode { ...原创 2019-04-21 16:59:52 · 468 阅读 · 0 评论 -
55链表中环的入口结点--56删除链表中重复的结点--57二叉树的下一个结点
55链表中环的入口结点给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 思路分析:我们需要确定这个环的信息,但是我们只有链表头结点。定义两个节点fast和slow,fast向后走两步,slow走一步,如果存在环,这两个结点会相遇,而且相遇的节点一定在环上。如果存在环,fast和slow相遇之后,可以统计出环的节点数目count。然后再让fast和slow从头结...原创 2019-04-21 16:24:08 · 532 阅读 · 0 评论 -
剑指offer(49~51)把字符串转换成整数--数组中重复的数字--构建乘积数组
文章目录把字符串转换成整数数组中重复的数字构建乘积数组把字符串转换成整数将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。注意两点:第一个字符是正负号也是合法的。如果只输入一个字符0,也应该是合法的,对于不合法输入和合法输入字...原创 2019-04-03 13:45:25 · 679 阅读 · 6 评论 -
剑指offer(46~48)孩子们的游戏--求1+2+3+...+n--不用加减乘除做加法
文章目录孩子们的游戏(圆圈中最后剩下的数)求1+2+3+...+n不用加减乘除做加法孩子们的游戏(圆圈中最后剩下的数)每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以...原创 2019-04-01 12:37:28 · 715 阅读 · 11 评论 -
二叉树四种遍历方式
文章目录二叉树前序遍历二叉树中序遍历二叉树后续遍历二叉树层续遍历二叉树前序遍历递归深度搜索方法/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) :...原创 2019-10-11 17:41:56 · 239 阅读 · 0 评论 -
剑指offerC++解析和答案
1)二维数组中的查找2)替换空格3)从尾到头打印链表4)重建二叉树5)用两个栈实现一个队列6)旋转数组的最小数字7)斐波那契数列8)跳台阶9)变态跳台阶10)矩形覆盖11)二进制中1的个数12)数值的整数次方13)调整数组顺序使奇数位于偶数前面14)链表中倒数第k个节点15)反转链表16)合并两个有序的链表17)树的子结构18)二叉树的镜像19)顺时针打印矩阵...原创 2019-04-24 11:07:06 · 7288 阅读 · 0 评论 -
52正则表达式匹配--53表示数值的字符串--54字符流中第一个不重复的字符
正则表达式匹配请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配。牛客网链接表示数值的字符串请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例...原创 2019-04-24 10:38:22 · 682 阅读 · 0 评论 -
64滑动窗口的最大值--65矩阵中的路径--66机器人的运动范围
文章目录64滑动窗口的最大值65矩阵中的路径66机器人的运动范围64滑动窗口的最大值给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{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}...原创 2019-04-23 17:53:23 · 804 阅读 · 0 评论 -
螺旋矩阵(回型矩阵)
螺旋矩阵给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[[1, 2, 3, 4],[5, 6, 7, 8],[9,10,11,12]]输出: [1,2,3,...原创 2019-10-13 13:19:45 · 555 阅读 · 0 评论 -
有序数组和有序链表转换成AVL树
文章目录有序数组转换成AVL树有序链表转换成AVL树有序数组转换成AVL树将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:联想:二分思想、归并、深度优先。/** * Definition for a binary tree node. * struct TreeNode ...原创 2019-10-13 17:52:45 · 660 阅读 · 0 评论 -
2048最少的合成次数
2048最少的合成次数■题目描述有一个数字游戏叫做2048,此游戏的规则为,两个相同的数字能进行相加。例如:两个2可以相加,则相加后4的个数加一,2的个数会减二。现在有一串数字,为目前已知的数字的数量。问至少还需要几次相加,才能获得2048 (题目保证能够相加得到2048)。输入描述:第一行为样例数T,代表后面会跟随工组测试数据。每组测试数据输入10个数,分别代表2,4,8,16,3...原创 2020-02-19 21:50:55 · 6274 阅读 · 6 评论 -
随机数:猜数字游戏
简单猜数字游戏#define _CRT_SECURE_NO_WARNINGS//某些版本VS要求加这样的头文件才可以,否则会有警告#include #include #include #include #include void menu()//定义菜单函数,多次使用,方便调用。{ printf(&amp;amp;amp;amp;amp;amp;quot;*******************************\n&原创 2017-12-29 15:51:32 · 1107 阅读 · 0 评论 -
C语言实现三子棋
文章目录思路整理头文件测试代码游戏实现思路整理这个游戏的棋盘实际是个字符二维数组,你或许会问,二维数组很简单你的棋盘看起来有点复杂,实际上,二维数组就是一般的二维数组,在双方都未曾落子之前这个二维数组的所有元素都被初始化为一个‘ ’,当玩家下子之后,对玩家输入的坐标判断,如果合法且仍然是‘ ’,就将二位坐标对应的二维数组下标的元素更改成W,来表示玩家的棋子。在打印棋盘时候,在数组元素前后留空...原创 2019-01-10 12:52:15 · 274 阅读 · 0 评论 -
C语言实现扫雷
文章目录思路整理源文件游戏实现部分game.c头文件game.h测试代码test.c思路整理设计两个二维数组,一个是mine数组,一个是show数组。上面展示mine二维数组,因为涉及到需要统计一个位置四周的雷数目,所以需要用到辅助区域,辅助区域不产生雷,是非雷区域,避免越界访问。在这幅图中,用字符0表示非雷,用字符1表示雷,雷式随机产生的,产生雷的位置式核心雷区部分。上图是向玩家展示...原创 2019-01-11 17:43:40 · 323 阅读 · 0 评论 -
杨辉三角--水仙花数--Sn=a+aa+aaa
在屏幕上打印杨辉三角#define _CRT_SECURE_NO_WARNINGS#include&amp;amp;amp;lt;stdio.h&amp;amp;amp;gt;#include&amp;amp;amp;lt;windows.h&amp;amp;amp;gt;#define size 10int main(){ int i = 0; int j = 0; int a[10原创 2018-03-07 23:48:14 · 925 阅读 · 0 评论 -
比赛排名--谁是凶手--可以喝多少水
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A第一; 比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。#define _CRT_SECURE_NO_WARNINGS#include&amp;amp;amp;amp;amp;amp;lt;stdio.h&amp;amp;am原创 2018-03-07 23:38:29 · 594 阅读 · 0 评论 -
输出乘法口诀表--输出素数--输出闰年
#define _CRT_SECURE_NO_WARNINGS#include&amp;lt;stdio.h&amp;gt;#include&amp;lt;stdlib.h&amp;gt;int main(){ int i=0;//定义行号变量 int j=0;//定义列号变量 for(i=1;i&amp;lt;=9;i++)//行从第一行到第九行 { f原创 2017-12-14 10:53:59 · 498 阅读 · 0 评论 -
奇数位为正,偶数位为负,求和--两个数的最大公约数--9出现的次数
#define _CRT_SECURE_NO_WARNINGS#include&amp;amp;amp;lt;stdio.h&amp;amp;amp;gt;#include&amp;amp;amp;lt;stdlib.h&amp;amp;amp;gt;int main(){ double sum=0.0; int i=0; //int flag=1;奇数分之一都是正值,偶数分之一都是负值 for(i=1;原创 2017-12-18 11:40:55 · 1655 阅读 · 0 评论