深信服二面

深信服二面

用两个栈实现队列

// 你必须定义一个 `main()` 函数入口。
//前提已知:
struct Stack
{
    int top;     //栈顶指针
    int stacksize;//栈的大小
    int *s;      //栈底指针
};
void InitStack(Stack *s);
void Push(Stack *s, int k);
int Pop(Stack *s);
int IsStackEmpty(Stack *s);
int IsStackFull(Stack *s);

void EnQueue(Stack *s1, Stack *s2, int k)
{
  if (!IsStackFull(s1))
    Push(s1, k);
}

int DeQueue(Stack *s1, Stack*s2)
{
  int k = 0;
  InitStack(s2);
  while (!IsStackEmpty(s1))
  {
    Push(s2, Pop(s1));
  }
  if (!IsStackEmpty(s2))
    k = Pos(s2);
  return k;
}

当时考虑的还算快,2分钟就基本想到解决方案了,不过方案有点bug。

正确的方案是,入队,直接入栈s1,出队,先看栈s2是否为空,为空就将s1的元素依次出栈并压入s2,然后将s2的栈顶元素弹出即可。

TCP如何实现可靠传输

计算机网络——TCP如何做到可靠数据传输 - 特务依昂 - 博客园 (cnblogs.com)

基本上分3个点

  1. 校验和
  2. 超时重传
  3. 序列号、确认序列号

局部路径规划算法

主要是我自己说漏嘴了

局部路径规划算法,用到的采样的方案

分为5个步骤

  1. 采样,获取当前环境信息,和当前机器人位姿(速率、方向)
  2. 在加速度极限内,得到一个在一小段时间内可以到达速度集合
  3. 根据这个速度集合,计算出一小段时间内的移动路径
  4. 基于某种评价标准打分(距离目标点的距离、和障碍物的距离、和全局规划路径的距离等)
  5. 选择最优路径,将对应速度传给下位机
上一篇:莫烦强化学习视频笔记:第二节 2.1 Q-Learning


下一篇:LeetCode0567-字符串的排列,判断 s2 是否包含 s1 的排列