10 2018 档案
摘要:1. 题目 2. 解答 将数独中数字的 ASCII 码值转化到 0 8 之间作为散列值,建立一个散列表,然后分别逐行、逐列、逐宫(3 3小块)统计每个数字的出现次数,若出现次数大于 1,则数独无效。 上面的方法需要对数独遍历三次,我们也可以做到在遍历一次的情况下判断数独是否有效。 针对每行、每列和每
阅读全文
摘要:1. 题目 2. 解答 2.1. 方法一 我们从前往后遍历字符串,start 代表最长子串的起始位置,一开始设置为零。 如果没有遇到重复字符,则更新子串的长度,向后遍历。 如果遇到重复字符时,则更新字符串起始位置为 上一个相同字符的后面一个位置 ,同时更新子串长度。 重复上面这个过程,直到遍历完毕。
阅读全文
摘要:1. 离散时间线性时不变系统的卷积和 1.1. 用脉冲表示离散时间信号 任何离散时间信号都可以看成是由离散时间单位脉冲组成的。 这个式子相当于把任意一个序列表示成一串移位的单位
阅读全文
摘要:1. 连续时间和离散时间信号 1.1. 连续时间和离散时间信号的定义 连续时间信号的自变量是 连续可变 的,信号在自变量的连续值上都有定义;而离散时间信号的自变量 仅仅定义在离散时刻点上 ,也就是自变量仅取在一组离散值上。 为了区分这两类信号,我们用 表示连续时间变量,而用 表示离散
阅读全文
摘要:在 C++ 中,我们通过调用输入输出流库中的流对象 cin 和 cout 来实现输入和输出。 c include using namespace std; int main() { int a = 0; float b = 0; char c = 0; cin a b c; cout include
阅读全文
摘要:1. 题目 2. 解答 若矩阵为空,比如 [], [[]],此时直接返回 false。 若目标值小于矩阵第一个元素或者大于矩阵最后一个元素,则目标值不在矩阵范围内,直接返回 false。 其他情况下,则从矩阵第一行开始逐行扫描。若目标值位于矩阵某一行数值范围内,再针对矩阵的某一行用二分查找精准定位。
阅读全文
摘要:1. 题目 2. 解答 2.1. 方法一 将 s 和 t 转化为 Python 的列表,然后遍历列表 s 的元素, 将它们从列表 t 中删除,最后列表 t 中会余下一个元素,即为所求 。 2.2. 方法二 将 t 转化为 Python 的集合,由于集合元素的互异性,这个过程会去掉重复元素,然后再将其
阅读全文
摘要:1. 题目 2. 解答 循环遍历两个链表 若两个链表都非空,将两个链表结点的值和进位相加求出和以及新的进位 若其中一个链表为空,则将另一个链表结点的值和进位相加求出和以及新的进位 然后将每一位的和添加到新链表中。 如果 有一个链表为空,且此时进位为 0 ,我们则只需要将非空链表后面的值复制到新链表即
阅读全文
摘要:上面的语句创建了一个列表 a ,其中有三个元素,每个元素都是一个 lambda 匿名函数。 可是为什么三个函数的返回值都为 2 呢? 这是因为函数创建的时候,并没有传递参数,而 只有当我们最后调用三个函数的时候,这时候 x 才被作为实参传递进 lambda 函数 ,而此时的 x = 2,所以三个函数
阅读全文
摘要:1. 操作系统接口 os 模块提供了一些与操作系统相关联的函数。 2. 文件通配符 glob 模块提供了一个函数用于从目录通配符搜索中生成文件列表。 3. 命令行参数 在命令行中运行 python 命令时,这些参数会以列表形式保存在 sys 模块的 argv 变量中。 4. 日期和时间 dateti
阅读全文
摘要:1. 语法错误 Python 的语法错误被称为解析错,语法分析器会指出出错的代码行,并且在最先找到的错误的位置标记一个小小的箭头。 2. 异常 即使 Python 程序的语法是正确的,但是在运行的时候,也有可能发生错误,运行期监测到的错误称为异常。 3. 异常处理 try 语句按照以下方式工作: 首
阅读全文
摘要:1. 类的介绍 类(Class) 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例,类是对象的抽象。 方法 :类中定义的函数。 类变量 :类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。 方法变量
阅读全文
摘要:1. 题目 2. 解答 2.1. 方法一 基于 "LeetCode 33——搜索旋转排序数组" 中的方法二。 当 nums[mid] = nums[right] 时,比如 [1, 1, 2, 1, 1],[1, 1, 0, 1, 1],为了找到正确的转折点, 我们查看 [mid, right] 之间
阅读全文
摘要:1. 题目 2. 解答 2.1. 方法一 直接进行二分查找,在判断查找方向的时候详细分类。 当 nums[mid] nums[mid] = nums[left],则向左查找。 若 nums[right] target 时, 若 nums[mid] nums[right],此时 nums[mid] 两
阅读全文
摘要:1. 题目 2. 解答 此题目为 "今日头条 2018 AI Camp 5 月 26 日在线笔试编程题第二道——最小分割分数" 。 c class Solution { public: // 若分割数组的最大值为 value,判断能否进行划分 bool cansplit(vector& nums,
阅读全文
摘要:1. 题目 2. 解答 2.1. 方法一 题目要求不能使用乘法、除法和除余运算,但我们可以将 除法转移到对数域 。 这样就转化为指数、对数和减法运算了。因为只能对正整数取对数,因此我们首先要将两
阅读全文
摘要:1. 数字 类型 int, float, bool, complex type() 查看变量类型 isinstance(a, int) 查看变量类型 运算符 % 取余 // 返回商的整数部分 幂 & 按位与 | 按位或 ^ 按位异或 ~ 按位非 and 逻辑与 or 逻辑或 not 逻辑非 in、n
阅读全文
摘要:1. 键盘输入 Python提供了 input() 内置函数从标准输入读入一行文本,默认的标准输入是键盘。input 可以接收一个 Python 表达式作为输入,并将运算结果返回。 2. 读写文件 open() 将会返回一个 file 对象,基本语法格式如下: open(filename, mode
阅读全文
摘要:1. 变量作用域 Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。Python 的作用域一共有4种,分别是: L (Local) 局部作用域 E (Enclosing) 闭包函数外的函数中 G
阅读全文
摘要:1. a, b = a, a + b 先计算右边表达式,然后再同时赋值给左边。 2. 条件控制和循环语句 条件控制 while 循环 for 循环 range() 函数 break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else
阅读全文
摘要:本文提出了一个针对真实图像的盲卷积去噪网络,增强了深度去噪模型的鲁棒性和实用性。 摘要 作者提出了一个 CBD Net,由噪声估计子网络和去噪子网络两部分组成。 作者设计了一个更加真实的噪声模型,同时考虑了信号依赖的噪声和相机内部处理的噪声。 基于真实噪声模型合成的图片和真实的噪声图片被联合在一起对
阅读全文
摘要:1. 题目 2. 解答 首先,利用快慢指针确定链表的总结点数。 偶数个结点时,结点个数等于 i 2。 奇数个结点时,结点个数等于 i 2 + 1。 然后将链表的每 K 个结点划分为一组。循环对每组的子链表进行 "翻转" ,并依次拼接起来。 最后,将多余的结点拼接在新链表最后面即可。 代码如下 获取更
阅读全文
摘要:1. 题目 2. 解答 2.1. 方法一 在 "合并两个有序链表" 的基础上,我们很容易想到第一种解法,首先我们将第一个链表和第二个链表合并成一个新的链表,然后再往后依次合并接下来的每个链表即可。 假设每个链表结点数一样都为 n,第一次合并时,要遍历 2n 个结点,往后则要分别遍历 3n, 4n,
阅读全文
摘要:1. 题目 2. 解答 新建一个带有哨兵结点的链表,依次比较两个有序链表的结点值,将较小值的结点插入到新链表后面。直到其中一个比较完毕,将另一个链表剩余的结点全部放到新链表最后面即可。最后,可以删除哨兵结点,或者直接返回哨兵结点后第一个结点指针。 获取更多精彩,请关注「seniusen」!
阅读全文
摘要:1. 题目 2. 解答 因为给定的只有一个待删除的结点指针,我们并不知道其前面结点,所以需要将待删除结点后面的结点值复制到前面结点去,然后指向其后的第二个结点即可。 获取更多精彩,请关注「seniusen」!
阅读全文
摘要:1. 题目 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1 2 3 4 5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1 2 3 5. 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗? 2. 思路 定义两个指针 p
阅读全文
摘要:1. 题目 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 输出: 4
阅读全文
摘要:1. 题目 设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列
阅读全文
摘要:1. 题目 请判断一个链表是否为回文链表。 示例 1: 输入: 1 2 输出: false 示例 2: 输入: 1 2 2 1 输出: true 进阶: 你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题? 2. 思路 此题可以看做是 "反转链表" 和 "链表中间结点" 的结合。 定义快
阅读全文
摘要:1. 题目 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) 返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。 注
阅读全文
摘要:对单链表进行反转有迭代法和递归法两种。 1. 迭代法 迭代法从前往后遍历链表,定义三个指针分别指向相邻的三个结点,反转前两个结点,即让第二个结点指向第一个结点。然后依次往后移动指针,直到第二个结点为空结束,再处理链表头尾即可。 2. 递归法 基线条件:空链或只有一个结点,直接返回头指针 递归条件:递
阅读全文
摘要:最近一位外国友人在复现某个项目的代码时环境配置出了些问题,找我帮忙解决。说实话,游戏和增强学习这两方面我都不是很熟悉,但好在对 Ubuntu 还算熟悉,前前后后折腾了好久,终于让程序顺利运行了起来。不得不说,这些深度学习的环境配置起来真是让人心烦,各种库的版本层出不穷,一着不慎满盘皆输,但我们又能怎
阅读全文
摘要:现在的深度学习框架一般都是基于 Python 来实现,构建、训练、保存和调用模型都可以很容易地在 Python 下完成。但有时候,我们在实际应用这些模型的时候可能需要在其他编程语言下进行,本文将通过直接调用 TensorFlow 的 C/C++ 接口来导入 TensorFlow 预训练好的模型。 1
阅读全文
摘要:TensorFlow 的 Python 接口由于其方便性和实用性而大受欢迎,但实际应用中我们可能还需要其它编程语言的接口,本文将介绍如何编译 TensorFlow 的 C/C++ 接口。 安装环境: Ubuntu 16.04 Python 3.5 CUDA 9.0 cuDNN 7 Bazel 0.1
阅读全文
摘要:在某些任务中,我们需要针对不同的情况训练多个不同的神经网络模型,这时候,在测试阶段,我们就需要调用多个预训练好的模型分别来进行预测。 "调用单个预训练好的模型请点击此处" 弄明白了如何调用单个模型,其实调用多个模型也就顺理成章。我们只需要建立多个图,然后每个图导入一个模型,再针对每个图创建一个会话,
阅读全文
摘要:现在的深度学习框架一般都是基于 Python 来实现,构建、训练、保存和调用模型都可以很容易地在 Python 下完成。但有时候,我们在实际应用这些模型的时候可能需要在其他编程语言下进行,本文将通过 C/C++ 间接调用 Python 的方式来实现在 C/C++ 程序中调用 TensorFlow 预
阅读全文
摘要:1. 准备预训练好的模型 TensorFlow 预训练好的模型被保存为以下四个文件 data 文件是训练好的参数值,meta 文件是定义的神经网络图,checkpoint 文件是所有模型的保存路径,如下所示,为简单起见只保留了一个模型。 2. 导入模型图、参数值和相关变量 通过 saver.rest
阅读全文
摘要:1. 读写 txt 文件 savetxt 默认保存为 float64 格式的,注意保存和读取时 dtype 要一致,否则读出的数据可能会乱码。 "numpy.loadtxt" "numpy.savetxt" 2. 读写二进制 bin 文件 tofile 保存格式和数组的数据格式一致,注意保存和读取时
阅读全文
摘要:1. 初识数组 ndim,数组的维度数,二维数组就是 2 shape,数组在各个维度上的长度,用元组表示 dtype,数组中元素的数据类型,比如 int32, float64 等 size,数组中所有元素的总数 itemsize,数组中每个元素所占的字节数 2. 创建数组 np.linspace(s
阅读全文