自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 问答 (1)
  • 收藏
  • 关注

原创 shell脚本获得当前文件的绝对路径

path=$(cd `dirname $0`;pwd)路径保存在path中,使用时需要加上$,即$path

2021-08-03 16:58:13 344

原创 单例模式—饿汉模式与懒汉模式

饿汉模式饿汉模式是线程安全的class Singleton{ private: Singleton () { }static Singleton* single; public:static Singleton* GetTarget(){ return single; }};懒汉模式懒汉模式是有可能线程不安全的下面展示不安全的写法class Singleton2{ private: Singleton2(){ } stat...

2020-08-10 14:09:03 168

原创 Linux基础指令

目录目录指令文件指令匹配查找指令进程指令系统资源指令IPC指令环境变量指令网络指令权限指令目录指令:ls,pwd,mkdir,rmdir,rm,cp,cd 绝对路径:以根目录为其实路径 相对路径:以当前所在目录为起始路径文件指令:touch,cat,more,less,head,tail,lntouch:创建一个空文件,刷新文件时间属性cat:查看文件内容,打印文件内容到屏幕上more/less:分页查看文件内容 less功能更强...

2020-05-26 16:16:27 227

原创 [剑指offer]从上往下打印二叉树

题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路:借助队列queue来实现打印队顶如果队顶节点有左右子树那么就相继入队pop队顶元素代码:class Solution {public: vector<int> PrintFromTopToBottom(TreeNode* root) { if(!root){...

2020-03-11 20:35:37 99

原创 [剑指offer]栈的压入,弹出序列

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)为什么说4,5,3,2,1是一个弹出序列因为可以这样1入栈 2入栈 3入栈 ...

2020-03-09 21:34:20 105

原创 [剑指offer]包含min函数的栈(最小栈)

题目:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。思路:使用两个栈一个栈stack push任何值(来一个值就push进去) 另一个栈stack_little push比原stack_little栈顶元素小的值因为当sta...

2020-03-09 21:25:40 149

原创 [剑指offer]顺时针打印矩阵

题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.思路:不断地收缩,缩小矩形的边界定义四个边界变量up,d...

2020-03-06 21:52:27 110

原创 [剑指offer]合并两个排序链表(非递归,递归)

题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。思路:非递归:定义链表指针p1,p2首先 做个判断 将链表头的值较小的赋给p1 , 另外一个则赋给p2然后两个链表的数值作比较 将p2链表的元素依次插入p1链表中// 其中有几个小细节需要注意 : 看代码注释递归:递归的方法就很容易让人懂了首先定...

2020-03-05 17:54:29 126

原创 [剑指offer]链表中倒数第k个节点

题目:输入一个链表,输出该链表中倒数第k个结点。思路:快慢指针快指针先走k步 然后快慢指针同时走直到有一个指针指向空返回慢指针举个例子:{1,2,3,4,5} 3快指针先走三步 指向节点4 此时慢指针在节点1然后两个指针同时走 当快指针指到节点5的next为null时循环退出返回慢指针 此时慢指针在节点3代码展示:struct ListNo...

2020-03-04 13:47:41 88

原创 [剑指offer]调整数组顺序使奇数在偶数前面O(n)

题目描述:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解题思路:遍历整个数组是偶数的array.push_back()到数组尾部同时删除该位置上的偶数 array.erase(array.begin()+pos);结合代码看,在删除之后我们需要--len,...

2020-03-03 16:20:45 99

原创 [剑指offer]输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

如题,使用一个结论: 一个二进制数减1后与原数进行&运算会消去原二进制数中最右边的1(即 n&=n-1)举个例子:比如说有个二进制数1100 减1 变为 10111011 &1100 = 1000 这样就消去了最右边的1下面给出代码class Solution {public: int NumberOf1(int n) { ...

2020-03-03 14:03:12 213

原创 指针和引用

指针和引用的区别1.0 引用不可以为空,但是指针可以为空1.1. 所以定义一个引用的时候必须初始化1.2. 所以使用指针之前必须判空,而引用不需要2. 引用不可以改变指向,而指针可以 引用代码实验展示:#include <i...

2020-02-19 15:21:21 249

原创 set和vector

STL中的容器可以分为两大类:1、顺序容器:list,queue,vector2、关联容器:map,set(当然对应的有multimap,multiset)其中vector的存储结构是数组,其它的存储结构是链表。vector和set的区别:首先 vector属于顺序容器,其元素与存储位置与操作有关; set属于关联容器,其元素相当于键值。...

2020-02-18 17:56:58 478

原创 new和malloc总结(面试常问)

***new的底层就是malloc new先调用malloc申请空间,然后调用构造函数释放内存***malloc申请的内存空间在堆上 new分配内存的位置是一片自由存储区/*自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。而堆是操作系统中的术语,是操作系统所维护的一块特殊内存,用于程序的内存动态分配,C语言使用malloc从堆上...

2020-02-16 15:06:20 439

原创 map和unordered_map的区别

根据应用场景的不同,STL总共实现了两种不同结构的管理式容器:树型结构与哈希结构。树型结构的关联式 容器主要有四种:map、set、multimap、multiset。这四种容器的共同点是:使用平衡搜索树(即红黑树) 作为其底层结果,容器中的元素是一个有序的序列哈希结构的关联式 容器主要有四种:unordered_map、unordered_set、unordered_multimap、...

2020-02-15 16:23:40 381

原创 单链表总结(翻转,增删改查)

一、如何定义一个链表template<class T>struct ListNode { T _data; struct ListNode<T> * _next; };template<class T>struct SList { struct ListNode<T> * _head;};为何_next , _hea...

2020-02-15 15:10:07 180

原创 逆波兰表达式求值(栈)

题目:根据逆波兰表示法,求表达式的值。有效的运算符包括+,-,*,/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例1:输入: ["2", "1", "+", "3", "*"]输出: 9解释: ((2 + 1) * 3) = 9...

2020-02-09 17:03:23 231

原创 给定一个整数数组,判断是否存在重复元素。(延伸:重复N次的是什么)

题目:给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false思路分析:第一种方法:我们可以将数组排序查看相邻是否存在相同的元素第二种方法:使用unordered_map 将数组的值读入unordered_map 之后遍历pair.second的值是否大于1 或者判断unorde...

2020-01-21 16:14:10 870

原创 变形杨辉三角

题目: 1 1 1 1 1 2 3 2 1 1 3 6 7 6 3 11 4 10 16 19 16 10 4 1以上三角形的数阵,第一行只有一个数1,以下每行的每个数,是恰好是它上面的数,左上角数到右上角的数,3个数之和(如果不存在某个数,认为该数就是0)。求第n行第一个偶数出现的位置。如果没有...

2019-12-03 11:29:07 140

原创 二叉树公共祖先

题目:有一棵无穷大的满二叉树,其结点按根结点一层一层地从左往右依次编号,根结点编号为1。现在有两个结点a,b。请设计一个算法,求出a和b点的最近公共祖先的编号。给定两个int a,b。为给定结点的编号。请返回a和b的最近公共祖先的编号。注意这里结点本身也可认为是其祖先。测试样例:2,3返回:1解题思路:一个孩子的父亲节点的编号=孩子的编号/2 即 root=child/2;...

2019-12-02 10:02:43 131

原创 年终奖(动态规划)

题目:时间限制:3秒空间限制:32768K小东所在公司要发年终奖,而小东恰好获得了最高福利,他要在公司年会上参与一个抽奖游戏,游戏在一个6*6的棋盘上进行,上面放着36个价值不等的礼物,每个小的棋盘上面放置着一个礼物,他需要从左上角开始游戏,每次只能向下或者向右移动一步,到达右下角停止,一路上的格子里的礼物小东都能拿到,请设计一个算法使小东拿到价值最高的礼物。给定一个6*6的矩...

2019-12-02 09:51:57 218

原创 求一个byte数字对应的二进制数字中1的最大连续数

题目:功能: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1输入: 一个byte型的数字输出: 无 返回: 对应的二进制数字中1的最大连续数输入描述:输入一个byte数字输出描述:输出转成二进制之后连续1的个数示例1输入3输出2解题思路:根据位运算,获取每一位的二进制值。获取第i位的值: (n >&...

2019-11-27 11:35:07 1805

原创 井字棋判断输赢

题目:给定一个二维数组board,代表当前棋盘,其中元素为1的代表是当前玩家的棋子,为0表示没有棋子,为-1代 表是对方玩家的棋子。测试样例:[[1,0,1],[1,-1,-1],[1,-1,0]]返回:true解题思路:计算每一横行值之和 每一竖列值之和 两个对角线值之和 看看这些和是否等于3 等于三则是玩家胜利代码展示:#include <iostream&...

2019-11-19 10:28:27 1802

原创 从棋盘左上角走到右下角有多少种走法

题目:请编写一个函数(允许增加子函数),计算n x m的棋盘格子(n为横向的格子数,m为竖向的格子数)沿着各 自边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左 和往上走。输入描述: 输入两个正整数输出描述: 返回结果示例1:输入2 2输出6解题思路:看这个简单的4×4表格我们发现想到达第一横行 和 第一竖列的每一个点的走...

2019-11-19 10:17:01 3485

原创 不使用四则运算符计算A+B的值

题目:1. 标题:另类加法 | 时间限制:3秒 | 内存限制:32768K | 语言限制:[Python, C++, C#, Java] 请编写一个函数,将两个数字相加。不得使用+或其他算数运算符。给定两个int A和B。请返回A+B的值测试样例:1,2返回:3解题思路:点击这里代码展示:class Solution { public: int sum = 0; ...

2019-11-19 10:02:01 295

原创 判断括号是否合法

题目:2. 标题:合法括号序列判断 | 时间限制:3秒 | 内存限制:32768K | 语言限制:[Python, C++, C#, Java] 对于一个字符串,请设计一个算法,判断其是否为一个合法的括号串。给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串。一个合法的括号串定义为:1.只包括括号字符;2.左括号和右括号一一对应测试样例:"(()())",6...

2019-11-19 09:23:21 885 1

原创 一个数N步变为斐波那契数(以及优化)

题目:Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, ...,在Fibonacci数列中的数我们称为Fibonacci数。给你一 个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。输入描述:输入为一个正整数N(1 ≤ N ≤ 1,000,000)输出描述:输...

2019-11-19 09:13:44 528

原创 判断是否是回文串的变形题

题目:1. 标题:统计回文 | 时间限制:1秒 | 内存限制:32768K回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有 对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符 串B插入字符串A使产生的字符串是一个回文串。你接受花花的请求,帮助她寻找有多少种插入办法可以使新 串是一个回...

2019-11-19 08:58:05 166

原创 进制转换(十进制转换成任意进制)

题目:输入一个十进制整数m,转换成任意进制n(二--十六进制)题目分析(方法):m除n取余余数小于10,加48 48是0的ASCII码值 比如9+48 则变为9的ASCII码值余数大于等于10,加55 65是字符A的ASCII码值代码展示:#include <iostream>using namespace std;void conversi...

2019-11-09 11:54:39 530

原创 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。

题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。题目分析:由于要输出的这个数超过数组长度的一半所以不难理解 如果存在的话 这个数一定是排完序后的数组的中间元素因此我们将数组有序之后 用一个count记录...

2019-11-08 16:36:30 975

原创 读入一个字符串str,输出字符串str中的连续最长的数字串。

题目:输入描述:个测试输入包含1个测试用例,一个字符串str,长度不超过255。输出描述:在一行内输出str中里连续最长的数字串。示例1:输入abcd12345ed125ss123456789输出123456789题目分析:记录下每个数字串的长度以及其对应的数字串,当后面的数字串长度大于前面的就更新代表最长字符串和最长字符串长度。最后留下的就是最长的。代码展示...

2019-11-08 16:25:01 993

原创 输入两个字符串,从第一个字符串中删除第二个字符串中的字符

题目:输入两个字符串,从第一个字符串中删除第二个字符串中的所有字符比如输入第一个字符串:“They are students." 第二个字符串: "aeiou"删除之后的第一个字符串变成"The r stdnts."题目分析(思路):创建三个string类对象 第一个s1第二个str2为题目要求的字符串第三个str3则用来接收最后需要输出的字符串...

2019-11-07 18:29:51 6097

原创 牛牛举办的组队编程比赛

题目:牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人.牛牛发现队伍的水平值等于该队伍队员中第二高水平值。例如:一个队伍三个队员的水平值分别是3,3,3.那么队伍的水平值是3一个队伍三个队员的水平值分别是3,2,3.那么队伍的水平值是3一个队伍三个队员的水平值分别是1,5,2.那么队伍的水平值是2...

2019-11-07 17:43:29 847

原创 将一句话的单词进行倒置,标点不倒置(牛客网·互联网名企笔试/面试题库)

题目描述:将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I输入描述:每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100输出描述:依次输出倒置之后的字符串,以空格分割NOWCODER.COM牛客网·互联网名企笔试/面试题库牛客出品-http://www.nowcoder...

2019-11-07 17:22:57 2112

原创 实现一个类,计算程序中创建出了多少个类对象。(static成员)

一、直接上代码#include <iostream>using namespace std;class A { public: A() { ++_scount; } A(const A& t) { ++_scount; } static int GetACount() { return _scount; }pr...

2019-11-02 10:02:48 1281 1

原创 用两个栈实现一个队列

队列:队列是先进先出的原则栈:栈是先进后出的原则所以想要用栈实现队列是无法只用一个栈来实现的解题思路:用两个栈栈1用来push 栈2用来pop假设进栈的数据是水 栈是杯子 这里的解题思路就相当于两个杯子在有顺序地互倒水假设有数据 1 , 2 , 3 , 4顺序进栈stack1 希望得到的pop结果是 1 , 2 , 3 , 4 ;第一步:stack1此时从下...

2019-10-10 20:40:09 118

原创 连续子向量(子数组)的最大和

题目:HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和...

2019-09-23 10:15:47 700

原创 【C语言】选择排序

算法原理(假设这些数字在排队)1.首先从这个队伍中找出值最大(小)的数字放在队首 此时想象把队伍分成两组 一组有序 即刚刚找出的那个数字一组无序即除了队首的那个数字2.然后开始从无序的那组队伍开始寻找最大(小)的数字一旦找到就放到刚刚有序队伍的队尾以此类推直至所有数字都排序完毕整体思路我们可以看出选择排序的整体思路就是 从无序队列中找出最大(小)的数字...

2019-08-27 16:12:30 866

原创 链表的一些基本算法(遍历 增删查改等)

1.链表的定义typedef int SLTDataType; typedef struct SListNode { SLTDataType _data; struct SListNode* _next; }SListNode;typedef struct SList { SListNode* _head; }SList;2.链表的遍历// 链表遍历...

2019-08-20 15:44:40 185

原创 模拟实现strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove

一、模拟strcpy//模拟strcpy#include<stdio.h>#include<stdlib.h>#include <assert.h>char *my_strcpy(char *dest, const char *src) { assert(dest != NULL); assert(src != NULL); char *re...

2019-06-04 10:43:55 116

空空如也

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

TA关注的人

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