- 博客(32)
- 资源 (2)
- 收藏
- 关注
原创 MyAtoi
#include <bits/stdc++.h>using namespace std;#define mmax 2147483647#define mmin (-2147483647-1)int myAtoi(string s) { int i = 0, sign = 1, tmp = 0; //没有符号字符时sign是正数 while(s[i] == ' ') ++i; //1.忽略前导空格 if(s[i] == ...
2021-09-16 18:04:28
131
原创 一个长度为N的整形数组,数组中每个元素的取值范围是[0,n-1],判断该数组是否有重复的数
/*把每个数放到自己对应的序号的位置上,如果其他位置上有和自己对应序号相同的数,那么即为有重复的数值。时间复杂度为O(N),同时为了节省空间复杂度,可以在原数组上进行操作,空间复杂度为O(1)。*/#include <bits/stdc++.h>using namespace std;bool IsDuplicateNumber(int *array,int n){ if(array == NULL) return false; int i...
2021-07-21 18:16:16
1213
原创 两个栈实现一个队列
#include <bits/stdc++.h>using namespace std;class Solution{private: stack<int>stack1; stack<int>stack2;public: void push(int node) { stack1.push(node); } int pop() { if(stack2.size()!=0)...
2021-07-21 18:06:06
131
原创 二叉树的序列化与反序列化
#include <bits/stdc++.h>using namespace std;//序列化:必须保存一个中序遍历结果,然后外加一个前序或者后序遍历结果//反序列化:根据两次遍历生成的结果恢复二叉树//代码:前序和中序class TreeNode{public: int val; TreeNode *left; TreeNode *right;};TreeNode* helper(vector<int>pre,int startPr...
2021-07-21 17:59:47
108
原创 二叉树层序遍历
#include <bits/stdc++.h>using namespace std;class BinaryNode{public: int val; BinaryNode *lch; BinaryNode *rch;};BinaryNode* CreateBinary(){ int val; cin>>val; if(val == -1) return nullptr; BinaryNode...
2021-07-21 17:46:07
92
原创 给一个数组找到两个和为目标的下标
#include <bits/stdc++.h>using namespace std;vector<vector<int>> Find(vector<int>vec,int target){ //给一个数组找到两个和为目标的下标 int len = vec.size(); vector<vector<int>>result; for(int i = 0;i<len;i++)...
2021-07-17 20:46:17
149
原创 判断链表是否有环,以及环的长度
//链表是否有环存在#include <bits/stdc++.h>using namespace std;//如果链表有环,寻找环入口位置struct ListNode{ int val; struct ListNode *next;};ListNode* detectCycle(ListNode* head){ auto slow = head; auto fast = head; while(fast && fast...
2021-07-17 20:22:45
455
原创 公共子串计算
//公共子串计算/* 给定两个只包含小写字母的字符串,计算两个字符串的最长公共子串的长度。*/#include <bits/stdc++.h>using namespace std;int main(){ string str1; string str2; while (cin>>str1>>str2) { vector<vector<int>> dp(str1.size() + 1, v...
2021-07-17 19:59:15
127
原创 给定一个矩阵m*n,从左上角开始每次只能向右和向下走,最后到右下角的位置共有多少种路径。
#include <bits/stdc++.h>using namespace std;/* 每次只能向右或向下走 dp[m][n] = dp[m-1][n]+dp[m][n-1];表示走到(m,n)位置的走法 这道题求有多少条路径?那么理所应当想到动态规划。 我们令dp[i][j]是到达i,j最多路径 动态方程:dp[i][j] = dp[i-1][j]+dp[i][j-1]; 和上面的公式是一样的 对于第一行dp[0][j]和第一列dp[i][...
2021-07-17 12:50:37
3579
转载 2021-07-17[算法]给定一个矩阵m*n,从左上角开始每次只能向右或者向下走,最后到右下角的位置共有多少种路径
很经典的一道题等同于:https://leetcode-cn.com/problems/unique-paths/在完美世界面试中遇到了。每次都只能向右或者向下走,求出所有种情况。当时想到的思路是这样的。dp[m][n]=dp[m-1][n]+dp[m][n-1]表示走到(m,n)位置的走法给的题干是: class Solution { public int uniquePaths(int m, int n) { } } 这道题求有
2021-07-17 10:49:46
2000
原创 双向链表的增删改查和排序
#include <iostream>using namespace std;class Node //组成双向链表的节点{public: int data; Node* pNext; Node* pLast;};//构造一个双向链表class List{private: Node* pHead; Node* pTail; int length;public: List(int length) //创建一个双...
2021-07-17 10:16:44
132
转载 字符串转换成double类型数字
#include<stdio.h>#include<math.h>typedefint bool;#define true1#define false0#define MAXIMUM1.7E+308//#define MINIMUM1.7E-308double stol(constchar *str){ bool sign=false; bool hasPoint=false; double val...
2021-07-15 22:05:30
4357
原创 atoi代码实现(也只是简单的实现了一下)
//只考虑了数值的正负数,正数的话不用打印"+",负数的话需要打印‘-’//接下来我们还要检查一下非法输入,除了检查一下非法输入(非法输入以及溢出输出0),我们还要考虑一下溢出的问题long long StrToIntCore(const char* str,bool minus);enum Status{kValid = 0,kInvalid};int g_nStatus = kValid;int StrToInt(const char* str){ g_nStatus = kI...
2021-07-15 21:29:37
128
原创 花书+吴恩达深度学习(二七)深度生成模型之玻尔兹曼机及其变体(RBM, DBN, DBM)
https://blog.youkuaiyun.com/zhq9695/article/details/86668593
2020-03-24 10:45:28
228
转载 深度学习:长短期记忆模型LSTM的变体和拓展(GRU模型等)
原始的LSTM[深度学习:长短期记忆模型LSTM]LSTM模型的拓展[Greff, Klaus, et al. "LSTM: A search space odyssey." TNNLS2016] 探讨了基于Vanilla LSTM (Graves & Schmidhube (2005))之上的8个变体,并比较了它们之间的性能差异,包括:没有输入门 (No Input Ga...
2020-03-24 10:42:37
1162
转载 转身之后,此去流年
一转身,再回首,青春不再驻留。徒留下淡淡的忧伤,无言以对。这一次的转身,会是怎样一个结局呢?人走、茶凉。仿佛之间,画地为牢,这无声的恋曲,该用怎样的乐器去谱写这一世的沧桑呢?生命命运的长河中只不过是沧海一粟,只待风起潮涌,风平浪静。却激不起半点浪花。在千年之后,听风唤雨,经天地之长流,方可回眸,一挥手,却又消失的无影无踪。淡然无味,注定了一世的沧桑。就落于八月的桂花...
2019-07-04 14:34:15
246
原创 面试题:树中两个节点的最低
题目是:输入两个树节点,求它们的最低公共祖先。你要向面试官问的问题:1.这棵树是不是二叉树? 如果是二叉树,并且是二叉搜索树,那么是可以找到公共节点的。查找方法:二叉搜索树是排序过的,位于左子树的节点都比父节点小,而位于右子树的节点都比父节点大,我们只需要从树的根节点开始和两个输入的节点进行比较。如果当前节点的值比两个节点的值都大,那么最低的共同父节点一定在当前节点的左子树中,于是下一...
2018-09-01 19:13:41
225
原创 面试中经常遇到的一个问题:把字符串转换成整数
// 面试题67:把字符串转换成整数// 题目:请你写一个函数StrToInt,实现把字符串转换成整数这个功能。当然,不// 能使用atoi或者其他类似的库函数。//要对代码进行鲁棒性判断,同时还要注意一些非法的输入(定义一个全局变量来判断是不是非法的输入)//判断输入的空串的情况#include <cstdio>long long StrToIntCore(cons...
2018-09-01 17:47:01
212
原创 最大公共子序列
#include<iostream>#include <set>#include <string>using namespace std;char str[100] = {0};set<string> st;void Show(int** LCS,int m,int n,const char* str1,const char* st...
2018-08-27 12:53:20
139
原创 最大公共字串
#include<iostream>using namespace std;void AAAAAA(char* str1,char* str2){ if(str1 == NULL || str2 == NULL) return; int m = strlen(str1); int n = strlen(str2); int*...
2018-08-27 12:51:18
439
原创 STL的相关知识
1.C++vector中迭代器失效的原因:答:众所周知,vector在内存中是顺序存储的,那么当vector的长度增加时,也就是往里面继续pushback新的数据,当前块的内存不够,vector不得不重新申请一块新的更大的内存,然后把之前的数据复制过来,再插入新的数据。当定义一个vector的迭代器后,如果在这之后发生了插入新的数据,那么这个迭代器将失效,因为迭代器是通过指针实现的,内存地...
2018-08-20 10:02:24
131
转载 1.C++的三大特性为:继承,多态,封装
(1)继承。一个对象直接使用另一个对象的属性和方法。优点:1.减少重复的代码。 2.继承是多态的前提。 3.继承增加了类的耦合性。缺点:1.继承在编译时刻就定义了,无法在运行时刻改变父类继承的实现; 2.父类通常至少定义了子类的部分行为,父类的改变都可能影响子类的行为; 3.如果继承下来的子类不适合解决新问题,父类必须重写或替换,那么这种依赖关系就限制了灵活...
2018-08-17 14:45:41
172
原创 查看linux系统常用的命令,Linux查看系统配置常用命令
1.linux CPU大小 cat /proc/cpuinfo |grep "model name" && cat /proc/cpuinfo |grep "physical id"说明:Linux下可以在/proc/cpuinfo中看到每个cpu的详细信息。但是对于双核的cpu,在cpuinfo中会看到两个cpu。常常会让人误以为是两个单核的cpu。其实应该通过Phys...
2018-08-16 23:43:36
158
原创 baidu1面
1.TCP和UDP的区别2.TCP三次握手四次挥手各种状态知道吗 有可能会问某几个3.TCP 坚持定时器 坚持定时器是为谁而设立的 保活定时器4.TCP拥塞控制5.ARP ICMP6.路由器有哪些协议7.进程和线程的区别8.进程通信有哪些方式9.管道是什么10.Linux的基本命令11.shell脚本 find知道吗 说一下grep12.shell里单引号和双引号...
2018-08-14 23:24:33
128
原创 baidu面经
1. TCP/UDP的区别答: 1)TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接 2)TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付 Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的...
2018-08-14 23:21:01
146
转载 关于死锁
死锁产生的四个必要条件互斥条件:资源是独占的且排他使用,进程互斥使用资源,即任意时刻一个资源只能给一个进程使用,其他进程若申请一个资源,而该资源被另一进程占有时,则申请者等待直到资源被占有者释放。 不可剥夺条件:进程所获得的资源在未使用完毕之前,不被其他进程强行剥夺,而只能由获得该资源的进程资源释放。 请求和保持条件:进程每次申请它所需要的一部分资源,在申请新的资源的同时,继续占用已分配到...
2018-08-14 10:03:02
154
转载 一些常用的C++11新增特性
C++11新标基于C++编程社区的大量实践经验,并吸收了很多Boost库的特性,还对原有C++做了一些改进工作,是学习现代C++编程的基础。这里参考《C++ Primer Plus 第六版》,对一些常用的C++11新特性做一个总结:1、统一的初始化C++11支持对于所有的内置类型和用户定义类型使用大括号方式的初始化列表,使用初始化列表时,可以添加等号,也可以没有。int x = {5}...
2018-08-11 12:53:54
450
原创 简述快排
之前对快排还稍有疑问,今天特意认真的学习了一下,算是彻底的大彻大悟了吧,所以今天特意分享一下。 快排的话有两个函数,一个函数是找到一个标准值,使标准值左边的都比标准值小,标准值右边的都比标准值大,另一个就是快排的函数了,每调用一次快排的函数就将确定标准值的位置,如此循环往复,最终也就确定了最终的排序。代码如下:#include <iostream>#include...
2018-08-02 10:54:34
459
原创 总结一下Linux中经常使用的一些命令
1.ls:显示了当前文件夹下的文件2.mkdir+文件夹名: 创建一个文件夹3.rm +文件名:删除一个文件,当加上 rf的时候表示强制删除该文件4.vi : 使用vi编译器,进入vi 开始编写文件5.dd 删除文件中的某行数据 6.d p:拷贝某行或多行数据7.u:撤销命令,返回上一步的操作8.编译指令,比如:gcc test.c -o app...
2018-08-01 23:12:42
114
原创 简单总结一下C语言中经常遇到的一些简答题
1.简述const的作用,const与#define相比,有何特点?答:const只读变量,有类型,而#define是定义宏,没有类型。2.当一个应用程序运行时,出现了地址访问非法的问题,系统出错信息是:地址0x00000088不能读。 对应到C程序中,可能发生了什么情况?答:指针指向了无法访问的区域,1)...
2018-08-01 22:56:43
5360
1
转载 智能指针
C++面试过程中,智能指针往往显的特别的重要,比如智能指针有哪些?shared_ptr的设计原理是什么?如果让你自己设计一个智能指针,你如何完成?等等...,同时,智能指针还具有非常实用的价值。1.智能指针背后的设计思想:void remodel(std::string & str){ std::string * ps = new std::string(str);...
2018-08-01 17:02:31
108
原创 总结一些C++遇到的一些问答题
1.C++编译器自动为类产生的四个缺省函数是什么? 答:默认构造函数、拷贝函数、析构函数、赋值运算符函数和取地址运算符函数2.请简述C++中栈空间和堆空间的主要区别是什么?答:1)申请方式不同,在C++中栈空间是系统自动分配的,堆空间是用户自己申请空间并且需要自己释放。 2)系统响应方式不同 3)空间大小不同,栈空间小,堆空间大。 4)生长方式不同...
2018-08-01 17:00:32
729
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人