![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
刷题大法
Fenta01
萌新一枚
展开
-
LeetCode 实践练习6-10
LeetCode—6 思路:通过从左向右迭代字符串,我们可以轻松地确定字符位于Z字形团中的哪一行。 算法:从左到右迭代s,将每个字符添加到合适的行。可以使用当前行和当前方向这两个变量对合适的行进行跟踪。只有当我们向上移动到最上面的行或向下移动到最下面的行时,当前方向才会改变。 C++解法: class Solution { public: string convert(string s,...转载 2019-02-27 17:08:20 · 159 阅读 · 0 评论 -
LeetCode 实践练习56-60
LeetCode—56(合并区间) 方法:发现若区间重叠,则后面区间的start > 前面区间的end。但是前提是得排序。因此先进行排序,将第一个区间存入结果,然后第二个开始遍历区间集,判断是否重叠,如果有重叠则将res中最后一个区间的end值与当前遍历end值取max。然后继续遍历。 C++代码: class Solution { public: vector<Interv...转载 2019-03-20 16:53:46 · 137 阅读 · 0 评论 -
LeetCode 实践练习51-55
LeetCode—51(N皇后问题) 方法:经典的N皇后问题,基本所有的算法书都会包含的问题,经典的解法为回溯递归,一层层的向下扫描,需要用到一个pos数组,其中pos[i]表示第i行皇后的位置,初始化为-1,然后从第0开始递归,每一行都一次遍历各列,判断如果在该位置皇后会不会有冲突,依次类推,当到最后一个皇后放好后,一种解法就生成了,将其存入结果res中,再继续。 C++代码: class S...转载 2019-03-18 14:39:23 · 87 阅读 · 0 评论 -
LeetCode 实践练习66-70
LeetCode—66(加一) 方法:每次都判断是否为9,具体看代码。 C++代码: class Solution { public: vector<int> plusOne(vector<int>& digits) { int n = digits.size(); if(digits[n-1] != 9) {digits[...转载 2019-03-25 15:32:16 · 112 阅读 · 0 评论 -
LeetCode 实践练习41-45
LeetCode–41(缺失的第一个正数) 方法:由于限制O(n)O(n)O(n)的时间复杂度,O(1)O(1)O(1)的空间复杂度.不能建立新的数组,那么只能覆盖原有数组,我们的思路是把1放在数组第一个位置nums[0],2放在第二个位置nums[1],即需要把nums[i]放在nums[nums[i] - 1]上,那么我们遍历整个数组,如果nums[i] != i + 1, 而nums[i]...转载 2019-03-13 16:47:31 · 147 阅读 · 0 评论 -
LeetCode 实践练习61-65
LeetCode—61(旋转链表) 方法:此题一种方法,是利用快慢指针,快指针先走k步,然后两个指针一起走,当快指针走到末尾时,满指针指的下一个位置即是新顺序的头结点(特殊情况链表为空,k>n)。另一种方法,一个指针即可,就是先遍历整个链表获得链表长度n,然后链表的头和尾接起来,然后往后走 n - (k % n),就到达了新链表的头节点前一个点,这是断开链表即可。 class Soluti...转载 2019-03-22 10:46:47 · 116 阅读 · 0 评论 -
LeetCode 实践练习71-75
LeetCode—71(简化路径) 方法:规律,若遇到".“的情况直接去掉,若遇到”…"的情况,删掉紧挨着的上一个路径。还有若为空,则返回/,如果有多个/只保留一个。C++中有专门处理字符串的机制,我们可以使用stringstream来分割字符串,然后对每一段处理。 C++代码: class Solution { public: string simplifyPath(string pa...转载 2019-03-26 15:41:20 · 112 阅读 · 0 评论 -
LeetCode 实践练习81-85
LeetCode—81(搜索旋转排序数组II) 方法:与33题类似,都是搜索旋转排序数组,但是33题假设数组中不存在重复数组,而本体没有。时间复杂度O(logn)O(logn)O(logn),依旧是利用规律,用mid表示中间数,当mid<right时,右边有序。当mid>right时,左边有序。若想等,right左移。 C++代码: class Solution { public: ...转载 2019-04-01 15:01:52 · 101 阅读 · 0 评论 -
LeetCode 实践练习76-80
LeetCode—76(最小覆盖子串) 方法: 第一种解决办法是用HashMap,而不是HashSet,因为要统计T串中字母的个数,而不是仅仅看某个字母是否在T串中出现。统计好T串字母的个数后,就开始遍历S串,对于S中的每个遍历到的字母,都在HashMap中的映射值减一。如果减一后的映射值仍然大于等于0,则T串中存在,我们使用计数器自增1,当计数器=T.size()时,说明窗口已经包含了T中的所...转载 2019-03-28 16:09:24 · 132 阅读 · 0 评论 -
LeetCode 实践练习86-90
LeetCode—86(分隔链表) 方法:我们可以利用一个新链表保存比x小的,这样原链表就剩下比x大于等于的,随后将原链表接在新链表后面即可。 C++代码: class Solution { public: ListNode* partition(ListNode* head, int x) { if(!head) return head; ListNod...转载 2019-04-03 11:00:31 · 149 阅读 · 0 评论 -
BAT机器学习面试21-25题笔记
21 .为什么06年以前神经网络层数很少,deep learning 能抑制梯度消失或者爆炸的问题。这个深度代表很多的神经网络的层数。 因为以前所说的神经网络算法没有好的训练方法,最终训练的神经网络有2到3层就是极限了,对于很多应用来说没有实际价值。以前的主流神经网络训练方法叫反向传播,但是也解决不了随着神经网络层数的增加而梯度消失的问题。 2006年,Hinton在《Science》和相关期刊上...转载 2019-04-22 14:12:06 · 542 阅读 · 0 评论 -
LeetCode 实践练习36-40
LeetCode–36(有效的数独) 方法:遍历每个数字的时候,就看看包含当前位置的行和列以及3x3小方阵中是否已经出现该数字,那么我们需要三个标志矩阵,分别记录各行,各列,各小方阵是否出现某个数字,其中行和列标志下标很好对应,就是小方阵的下标需要稍稍转换一下. C++代码: class Solution { public: bool isValidSudoku(vector<ve...转载 2019-03-11 21:28:33 · 142 阅读 · 0 评论 -
LeetCode 实践练习31-35
LeetCode—31(下一个排序) 方法:求下一个排列顺序,如果给定数组是降序,则说明是全排列的最后一种情况。则说明是全排列的最后一种情况,则下一个排列就是最初始情况。其余情况理解: 如有一个数组:1274311 2 7 4 3 1127431 则下一个排列为:131247131247131247 从末尾往前看,数字逐渐变大,到了2时才减小的,然后我们再往后找一个比2大的数字,是...转载 2019-03-11 14:13:19 · 132 阅读 · 0 评论 -
BAT机器学习面试6-10题笔记
BAT机器学习面试6-10题笔记 6.overfitting怎么解决? 机器学习 ML基础 中dropout、regularization、batch normalization overfitting就是过拟合, 其直观的表现如下图所示,随着训练过程的进行,模型复杂度增加,在training data上的error渐渐减小,但是在验证集上的error却反而渐渐增大——因为训练出来的网络过拟合了训...转载 2019-02-27 21:15:03 · 302 阅读 · 0 评论 -
LeetCode 实践练习1-5
LeetCode—1 1.暴力法 遍历数组其余部分来进行来寻找所对应部分。时间复杂度为O(n2)O({n^2})O(n2) 空间复杂度为O(n)O(n)O(n) (疑问:每个不是利用了两次吗?) public int[] twoSum(int[] nums, int target) { for (int i = 0; i &amp;amp;amp;amp;amp;lt; nums.length; i++) { ...转载 2019-02-27 13:07:53 · 200 阅读 · 0 评论 -
BAT机器学习面试11-15题笔记
11. L1L1L1和L2L2L2正则先验分别服从什么分布(第五题关联) L1L1L1服从拉普拉斯分布,L2L2L2服从高斯分布。 所谓先验就是优化的起跑线,有先验的好处就是可以在较小的数据集中有良好的泛化性能,当然这是在先验分布是接近真实分布的情况下得到的了,从信息论的角度看,向系统加入了正确先验这个信息,肯定会提高系统的性能。 通俗解释: 模型过于复杂是因为模型尝试去兼顾各个测试数据点, 导致...转载 2019-03-05 09:37:05 · 195 阅读 · 0 评论 -
LeetCode 实践练习16-20
LeetCode—16(最接近的三数之和) 相对于上一题求三数之和为0,这道题让我们返回这个最接近给定值(target)的值,即我们要保证当前三数和跟给定值之间的差的绝对值最小,所以我们需要定义一个变量diff用来记录差的绝对值。 方法:还是先将数组排个序,然后遍历数组,思路跟上一题相似,都是先确定一个数,然后用两个指针left和right来滑动寻找另外两个数,每确定就求三数之和,然后算和给定值的...转载 2019-03-05 12:17:36 · 243 阅读 · 0 评论 -
BAT机器学习面试1-5题笔记
BAT机器学习面试1000题 前言 本文章,题目与解析为转载系列。会加入自己的理解。BAT机器学习面试1000题系列,侧重机器学习、深度学习。我们将通过这个系列索引绝大部分机器学习和深度学习的笔试面试题、知识点,它将更是一个足够庞大的机器学习和深度学习面试库/知识库,通俗成体系且循序渐进。 1.请简要介绍下SVM SVM全称:Support Vetor Machine,中文名 ...转载 2019-02-27 13:08:08 · 434 阅读 · 0 评论 -
LeetCode 实践练习21-25
LeetCode—21(合并两个有序链表) 方法一:新建一个链表,然后比较两个链表中的元素值,把较小的那个链到新链表中,由于两个输入链表的长度可能不同,所有最终会有一个链表先完成插入所有的元素,则直接另一个未完成的链表直接链入新链表的末尾。 C++解法: class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListN...转载 2019-03-06 16:04:33 · 151 阅读 · 0 评论 -
LeetCode 实践练习11-15
LeetCode—11(盛最多水的容器) 方法一:暴力法 简单的考虑每对可能出现的线段组合并找出这些情况之下的最大面积。 时间:O(n2)O(n^2)O(n2) 空间:O(1)O(1)O(1) 方法二:定义i和j两个指针分别指向数组的左右两端,然后两个指针向中间搜索。每移动一次算一个值和结果比较取较大的,容器装水量的算法是找出左右两个边缘中较小的那个乘以两边缘的距离。 移动的解释:在最外围...转载 2019-03-04 15:35:21 · 115 阅读 · 0 评论 -
LeetCode 实践练习46-50
LeetCode—46(全排列) 方法一:跟77题(组合项)类似,解法基本相同,利用递归DFS来求解.这里我们需要用到一个visited数组来标记某个数字是否访问过,然后在DFS递归函数的循环应从头开始. C++代码: class Solution { public: vector<vector<int>> permute(vector<int>&am...转载 2019-03-14 14:51:47 · 140 阅读 · 0 评论 -
BAT机器学习面试16-20题笔记
16.为什么朴素贝叶斯如此&quot;朴素&quot;? 对于贝叶斯定理:P(c∣x)=P(c)P(x∣c)/P(x)P(c|x) = P(c)P(x|c)/P(x)P(c∣x)=P(c)P(x∣c)/P(x) P(c)是类的先验概率P(c)是类的先验概率P(c)是类的先验概率:样本空间中各类样本所占的比例。训练集包含充足的独立同分布样本时,P(c)P(c)P(c)可通过各类样本出现的概率来进行估计。 P(x∣c)是...转载 2019-03-14 18:32:09 · 161 阅读 · 0 评论 -
LeetCode 实践练习26-30
LeetCode—26(删除排序数组中的重复项) 方法一:这道题与移除有序链表中的重复项题(82与83)很类似,但是更要简单一些,因为毕竟数组的值可以通过下标直接访问,而链表不行。我们使用快慢指针来记录遍历的坐标,最开始时两个指针都指向第一个数字,如果两个指针指的数字相同,则快指针向前走一步,如果不同,则两个指针都向前走一步,然后将cur值赋值给不同值的坐标那。这样当快指针走完整个数组后,慢指针当...转载 2019-03-07 15:11:14 · 82 阅读 · 0 评论 -
BAT机器学习面试26-30题笔记
26 .卷积神经网络CNN池化层有什么作用? 池化(Pooling):也称为欠采样和下采样。主要用于特征降维,压缩数据和参数的数量。减小过拟合,同时提高模型的容错性。保持一定程度的旋转和平移不变性。 27.常见的激活函数。激活函数有什么作用? 所谓激励,实际上是对卷积层的输出结果左移次非线性映射。 如果不用激励函数(其实就相当于激励函数是f(x)=x),这种情况下,每一层的输出都是上一层输入的线性...转载 2019-04-23 10:44:49 · 385 阅读 · 0 评论