面经
liyuloves
这个作者很懒,什么都没留下…
展开
-
一个长度为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 · 1172 阅读 · 0 评论 -
两个栈实现一个队列
#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 · 113 阅读 · 0 评论 -
二叉树的序列化与反序列化
#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 · 88 阅读 · 0 评论 -
二叉树层序遍历
#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 · 74 阅读 · 0 评论 -
给一个数组找到两个和为目标的下标
#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 · 127 阅读 · 0 评论 -
判断链表是否有环,以及环的长度
//链表是否有环存在#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 · 429 阅读 · 0 评论 -
公共子串计算
//公共子串计算/* 给定两个只包含小写字母的字符串,计算两个字符串的最长公共子串的长度。*/#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 · 109 阅读 · 0 评论 -
给定一个矩阵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 · 3466 阅读 · 0 评论 -
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 · 1928 阅读 · 0 评论 -
双向链表的增删改查和排序
#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 · 114 阅读 · 0 评论 -
字符串转换成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 · 4263 阅读 · 0 评论 -
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 · 110 阅读 · 0 评论 -
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 · 115 阅读 · 0 评论 -
baidu面经
1. TCP/UDP的区别答: 1)TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接 2)TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付 Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的...原创 2018-08-14 23:21:01 · 125 阅读 · 0 评论