合并重叠区间,也就是那个最大不重叠区间的题目的变种。面试官会让你看题先整理思路,然后分析复杂度,最后面试官觉得你的思路OK就放你在远程连接上手撕代码

链接: https://leetcode-cn.com/problems/merge-intervals/

  1. 1.过拟合和欠拟合。
  2. 2.python多进程
  3. 3.python深浅拷贝

~ 文末有福利 ~

解题思路:

  • 先对输入数组按照区间左边的值进行升序排列
  • 初始化一个变量 res,用于存储合并直接的区间结果
  • 遍历排序后的所有区间,针对每个区间做如下的处理:

如果当前处理的区间是第一个区间的话,那么直接将区间加入到 res

比较当前处理区间左边的值 i[0] 和 res 中最后一个区间右边的值 res[-1][1]:

如果 res[-1][1] < i[0],说明没有重叠,那么直接将当前处理的区间加入 res

否则,说明有重叠,那么将 res 中最后一个区间的右边的值更新为:当前处理区间右边值 i[1] 和 res 中最后一个区间右边的值 res[-1][1] 的最大值.

1.过拟合和欠拟合?

  • 过拟合:是指训练误差和测试误差之间的差距太大。换句换说,就是模型复杂度高于实际问题,模型在训练集上表现很好,但在测试集上却表现很差。
  • 欠拟合:模型不能在训练集上获得足够低的误差。换句换说,就是模型复杂度低,模型在训练集上就表现很差,没法学习到数据背后的规律。
  • 如何解决欠拟合?

欠拟合基本上都会发生在训练刚开始的时候,经过不断训练之后欠拟合应该不怎么考虑了。但是如果真的还是存在的话,可以通过增加网络复杂度或者在模型中增加特征,这些都是很好解决欠拟合的方法。

  • 如何防止过拟合?

获取和使用更多的数据(数据集增强)、降低模型复杂度、L1\L2\Dropout正则化、Early stopping(提前终止)

  1. 现在有个模型欠拟合,增加模型深度能改善吗?

可以下判断神经网络的拟合能力是否足够:使用少量数据训练模型,让每个epoch或者每个batch都是相同的数据,然后观察训练的loss和accuracy,如果发现loss下降并且accuracy上升了,训练结束后可以正确预测训练数据,那么可以确定是模型的拟合能力不足,无法拟合全部的训练数据,此时可以增加模型的深度,增强网络的拟合能力。

2.python多进程

线程

是操作系统中进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程可以有多个线程,每条线程可以同时执行不同的任务。一个线程可以看作一个cpu执行时所需要的一串指令。

多线程

在Python的标准库中提供了两个模块:_thread和threading,_thread是低级模块不支持守护线程,当主线程退出时,所有子线程都会被强行退出。而threading是高级模块,用于对_thread进行了封装支持守护线程。在大多数情况下我们只需要使用threading这个高级模块即可。

进程:

进程指的是一个程序在给定数据集合上的一次执行过程,是系统进行资源分配和运行调用的独立单位。也就是每一个应用程序都有一个自己的进程。进程在启动时都会最先产生一个线程,这个线程被称为主线程,然后再有主线程创建其他子线程

多进程:

多进程是multiprocessing模块提供远程与本地的并发,在一个multiprocessing库的使用场景下,所有的子进程都是由一个父进程启动来的,这个父进程成为madter进程,它会管理一系