
面试刷题
码源
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二叉搜索树转换双向链表c++
递归版本递归的思想:按照中序遍历每个节点并加入链表更新Plast----将整个树分解成了无数的小树,然后将他们分别转化成了一小段一小段的双向链表,再利用pLast记录总的链表的末尾,然后将这些小段链表一个接一个地加到末尾。class Solution {public: // Plast 节点始终记录已经加入链表的最后一个节点 TreeNode* Plast = NULL...原创 2020-04-06 15:11:37 · 510 阅读 · 0 评论 -
锁的分类
从线程是否需要锁定同步资源,分为乐观锁(互斥同步锁)– 可以简单理解为通常需要版本号控制– 举例:如git push– 适合:并发多读少写的情况悲观锁(非互斥同步锁)– 修改数据时把数据锁住别的线程无法访问改变– 缺点:可能会导致永久阻塞– 举例:如数据库select xxx for update–适合:临界区有IO操作、代码复杂、竞争激烈,并发多写入,避免大量自旋锁消耗。多...原创 2020-03-26 11:58:15 · 172 阅读 · 0 评论 -
C++默认大小根堆priority_queue求中位数
以前实现大小根堆总要自己写代码,循环父节点和孩子节点比大小换位置,今天看到C++中有默认的大小根堆实现// 大根堆priority_queue<type> BigRoot;// 小根堆priority_queue<type, vector<type>, greater<type>> SmallRoot;当然如果全是正数的话,小根堆实现比较...原创 2020-03-16 19:58:04 · 581 阅读 · 0 评论 -
力扣131.分割回文串
题目:给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。示例:输入: “aab”输出: [ [“aa”,“b”], [“a”,“a”,“b”] ]分析:有点向之前求所有子串问题,采用DP动态规划算法,只是多加上了判断是否为回文串, 在"aab" 一例中可以依次分析如下分割是否满足回文串特性:a-a-ba-abaa-ba...原创 2019-05-06 15:42:55 · 1265 阅读 · 0 评论 -
C++ Two Sum;Three Sum; FourSum--在数组中找两数/三数/四数之和为固定值
首先,本篇解决的问题采用两个指针方法的均假设数组有序的前提下,如果无序,则先通过排序算法使数组有序。1. Two Sum 问题可以通过map解决,vector<int> twoSum(vector<int> &nums, int target) { vector<int> v; map<int, int> hash; ...原创 2019-04-14 21:47:16 · 484 阅读 · 0 评论 -
趣说GET和POST请求方法的区别--面试官想要的
转:GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。当你在面试中被问到这个问题,你的内心充满了自信和喜悦。你轻轻松松的给出了一个“标...转载 2019-04-12 11:41:18 · 161 阅读 · 0 评论 -
C++求两个字符串的最长公共子串
文字解释过于繁琐直接上例子:const char* s1 = “ADOBE”;const char* s2 = “ABE”;对于这两个字符串,先标记相同字符的在矩阵中为1否则为0:ADOBEA10000B00010E00001那么公共子串即为对角线为1的,比如‘A’、‘BE’,只需在其中找到最长的1的对角线即可,这...原创 2019-04-02 22:21:06 · 7483 阅读 · 4 评论 -
topK问题,取数组中第k大和前k个大的元素--每日一题
分析用到大顶堆、小顶堆的知识点,正好复习一下:求第k大和前k个大的元素要用大顶堆还是小顶堆呢?如果直观的用大顶堆的话,堆顶是堆的最大值,而我们需要选出前K个最大的数据。如果我们在建堆时最大值被放到了对顶,那之后的k-1个次大值无法放入堆中。所以,选用最大堆只能找出k中的一些最大值,而不是全部。所以我们选用小顶堆,如果大于堆顶最小值则替换堆顶值放入堆中,再调整为最小堆,最终小顶堆存放前k个大...原创 2019-03-28 23:25:16 · 574 阅读 · 0 评论 -
单调栈和单调队列问题
单调队列是什么呢?可以直接从问题开始来展开。Poj 2823给定一个数列,从左至右输出每个长度为m的数列段内的最小数和最大数。数列长度:N<=106,m<=NN<=106,m<=N解法①很直观的一种解法,那就是从数列的开头,将窗放上去,然后找到这最开始的k个数的最大值,然后窗最后移一个单元,继续找到k个数中的最大值。Alt text这种方法每求...原创 2019-04-02 10:24:10 · 261 阅读 · 0 评论 -
求1-n中每个二进制数中1的个数 C++
这个题有多种解法,比如可以使用归并思路求每个数的二进制中每n(eg.n=4/8)位包含1的个数,再相加求和。当然另外一种思路是,一个数二进制中1的个数是它除去最高位那个1之后1的个数再➕1(因为2^n的二进制只有最高位为1)。比如7的二进制表示为:111(100+011),其中1的个数为1➕011中1的个数,即f(7) = 1+f(3)。代码:#include<iostream&g...原创 2019-04-01 22:10:14 · 1297 阅读 · 1 评论 -
排序算法性能和使用场景总结
按平均时间将排序分为四类:(1)平方阶(O(n2))排序 一般称为简单排序,例如直接插入、直接选择和冒泡排序;(2)线性对数阶(O(nlgn))排序 如快速、堆和归并排序;(3)O(n1+£)阶排序 £是介于0和1之间的常数,即0<£<1,如希尔排序;(4)线性阶(O(n))排序 如桶、箱和基数排序。各种排序方法比较 简单排序中直接插入最好,快速排序最快,当文件为正...转载 2019-04-01 21:24:53 · 1069 阅读 · 0 评论 -
Longest Increasing Path in a Matrix二维矩阵中最长递增路径
思路:设,当前点x(i,j)为终点的最长递增路径长度为f(x(i,j));则,当前点的上下左右节点为终点的最长递增路径长度分别为f(x(i-1,j)), f(x(I+1,j)), f(x(i,j-1)), f(x(i,j+1));此时,如果当前节点的值大于上下左右节点的值,则以当前节点为终点,上一步沿上下左右节点走向当前节点的递增路径长度依次为:up=f(x(i-1,j))+1,down...原创 2019-04-07 11:42:37 · 808 阅读 · 1 评论 -
STL中map和hash_map用法和区别
1. STL map1.1 为什么引入map考虑如何储存一系列key-value的键值对,最简单直观的是用一个数组或者链表保存。但是考虑下这样的插入、查找、删除效率,如果要高效,就需要把这些记录的键按照顺序排列,然后按照二分法查找,同时增加记录的时候也需要保持记录有序。我们如果自己去写需要考虑一系列因素,很麻烦对吧,所以STL中的map已经帮我们设计好了这一全套,我们只需要调用接口就好了。1...原创 2019-04-06 22:25:40 · 995 阅读 · 1 评论 -
C++找出数组中和为N的所有配对(不可重复)--每日一题
和昨天题目类似,唯一不同的是这里要求所用数组中的元素不可重复,那么我们就加上一个标记当前位的标志cur,每次只从cur往后搜索是否可以加进来保证和为N即可,具体看代码:#include <iostream>#include <vector>using namespace std;void SumK(vector<vector<int>>&a...原创 2019-03-28 09:39:36 · 594 阅读 · 0 评论 -
C++找出数组中和为N的所有配对(可重复)--每日一题
emmm我知道又熬夜了不好,但是想不出来不想睡觉啊啊啊O(≧口≦)O今天的问题:如题,先写一个简单的版本实现可重复地选出数组中和为N的所有配对。思路采用递归思想,每次压入数组当前元素,将所求加和的N减去当前元素。代码:#include <iostream>#include <vector>using namespace std;void SumK(vec...原创 2019-03-28 00:24:36 · 888 阅读 · 0 评论 -
C++ 递归 全排列(无重复元素)--每日一题
全排列就是所有元素所有可能的排列【例】1~3 的全排列:1 2 3, 1 3 2 , 2 1 3, 2 3 1, 3 1 2, 3 2 11,2,2的全排列:1 2 2, 2 1 2, 2 2 1先考虑无重复元素的时候:直接在SumK上修改的,具体看代码:#include <iostream>#include <vector>using namespace ...原创 2019-03-29 18:47:57 · 478 阅读 · 0 评论 -
力扣877. 鸡蛋掉落问题
题目:你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。你知道存在楼层 F ,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层或比它低的楼层落下的鸡蛋都不会破。每次移动,你可以取一个鸡蛋(如果你有完整的鸡蛋)并把它从任一楼层 X 扔下(满足 1 <= ...原创 2019-05-05 21:32:43 · 625 阅读 · 0 评论 -
leetcode 301.删除无效括号
题目删除最小数量的无效括号,使得输入的字符串有效,返回所有可能的结果。【说明:】 输入可能包含了除 ( 和 ) 以外的字符。示例 1:输入: “()())()”输出: ["()()()", “(())()”]示例 2:输入: “(a)())()”输出: ["(a)()()", “(a())()”]示例 3:输入: “)(”输出: [""]思路首先正向(从左向右...原创 2019-05-13 21:02:44 · 496 阅读 · 0 评论 -
机器学习面试常见问题--线性回归、逻辑回归、交叉熵、多分类
1,线性回归与逻辑回归区别?在拟合数据上,线性回归是用一条线直接拟合训练数据,而逻辑回归先利用sigmoid函数将数据映射为相应分类的概率拟合概率;在学习策略上,线性回归利用最小二乘法使损失函数(均方误差)最小化,而逻辑回归利用梯度下降法使损失函数(最大似然函数/交叉熵)最小化,即求所有训练样本的条件概率之积的最大值。2,为什么用对数似然函数?使用最大似然函数时,很多样本的概率需要连乘...原创 2019-05-23 07:46:24 · 1039 阅读 · 0 评论 -
C++面试常见概念2️⃣--指针引用、const汇总总结
1,指针引用的区别:首先最根本的,指针是地址,引用是别名。1)在使用上,指针在运行时可以改变其所指向的值,而引用一旦和某个对象绑定后就不再改变。也就是说在赋值后,指针可以被重新赋值,即指向另一个不同的对象。但是引用则总是指向在初始化时被指定的对象,以后不能改变,但是指定的对象其内容可以改变(非const的情况下)。指针可以指向空值,但是引用不可以它初始化的时候就必须指向一个已经存在的对象...原创 2019-05-22 21:06:25 · 213 阅读 · 0 评论 -
计算两字符串之间的距离
这个问题是对问题“已知两个字符串s和t,对s在任意位置执行三种操作:插入一个字符;删除一个字符;替换一个字符,求将s变成t所需要的最少操作次数x”的延伸,其实就是多加一步公式1-x/max(len(s),len(t)),因为将字符串s变成字符串t需要变化的次数越多,那么两个字符串之间的距离就越大。那么如何求字符串s变成字符串t的次数呢,假设len(s)=m,len(t)=n,建立一个[m,n]的...原创 2019-05-12 22:38:33 · 772 阅读 · 0 评论 -
两个数组的交集 II
题目:给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。我们可以不考虑输出结果的顺序。进阶:如...原创 2019-05-11 22:33:17 · 139 阅读 · 0 评论 -
C++面试常见概念--inline、virtual、static汇总总结
inline内联函数简单来说,编译器将inline函数体代码直接复制到inline函数调用点处而非普通函数的函数调用,有点像宏但是比宏更安全会,会做安全检查或自动类型转换。特点:省去了参数压栈、栈帧开辟与回收,结果返回等,加快运行速度;大多类的成员函数(没有循环递归、定义在内类或显示内联等)会自动转化为内联函数;但是也会造成代码膨胀、版本迭代不便、程序员不可控缺点。virtual虚函...原创 2019-05-15 19:52:53 · 465 阅读 · 0 评论 -
力扣208. 实现 Trie (前缀树)
题目:实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。示例:Trie trie = new Trie();trie.insert(“apple”);trie.search(“apple”); // 返回 truetrie.search(“app”); // 返回 false trie.startsWith(“ap...原创 2019-05-07 23:03:58 · 842 阅读 · 0 评论 -
leetcode 217.存在重复元素
题目给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true思路1使用set记录元素,因为se...原创 2019-05-10 17:23:57 · 140 阅读 · 0 评论 -
leetcode189.旋转数组
题目给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步:[7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入: [-1,-100,3,99...原创 2019-05-10 16:36:07 · 142 阅读 · 0 评论 -
LeetCode152. 乘积最大子序列
题目:给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。示例 :输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。思路:记录数组中每一个索引位置值包含进连乘末尾的最大最小值maxhere、minhere(...原创 2019-05-09 17:17:10 · 146 阅读 · 0 评论 -
leetcode334. 递增的三元子序列
题目:给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列。解释:数学表达式如下:如果存在这样的 i, j, k, 且满足 0 ≤ i < j < k ≤ n-1,使得 arr[i] < arr[j] < arr[k] ,返回 true ; 否则返回 false 。说明:要求算法的时间复杂度为 O(n),空间复杂度为 O(1) 。示例 1:...原创 2019-05-19 11:00:36 · 222 阅读 · 0 评论 -
力扣139.单词拆分I & II
题目:给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = “leetcode”, wordDict = [“leet”, “code”]输出: true解释: 返回 true 因为 “leetcode” 可...原创 2019-05-06 17:57:36 · 776 阅读 · 0 评论 -
力扣212. 单词搜索 II
题目:给定一个二维网格 board 和一个字典中的单词列表 words,找出所有同时在二维网格和字典中出现的单词。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。示例:输入:words = [“oath”,“pea”,“eat”,“rain”] and board =[[‘o’...原创 2019-05-08 23:56:03 · 816 阅读 · 0 评论 -
Reorganize String 重构字符串--每日一题
昨天在Google hackathon中有一个模拟面试的环节,面试官问了这样一道题–Given a string S, check if the letters can be rearranged so that two characters that are adjacent to each other are not the same.If possible, output any pos...原创 2019-03-25 20:45:20 · 272 阅读 · 0 评论 -
每日一题--删除链表的倒数第N个节点
题目原文:Remove Nth Node From End of List翻译:删除链表的倒数第N个节点分析双指针遍历,第一个指针开始遍历到第N-1个时第二个指针开始从头遍历,待第一个指针遍历结束的时候,第二个指针指向倒数第N个节点。其他特殊情况:删除的是尾结点1,链表只有一个节点,直接返回null;2,链表不止一个节点,倒数第二个节点指向null。代码#include&l...原创 2019-03-12 22:38:10 · 194 阅读 · 0 评论 -
零基础python机器学习笔记--线性回归--代码实战第三天
今天我们来讨论线性回归问题,数据来源是该系列第一天的岩石与矿石的数据,主要用到回归模型是:from sklearn import linear_modelmodel = linear_model.LinearRegression()首先在第一天的学习中我们已经通过以下代码拿到了数据df(DataFrame):target_url = "https://archive.ics.uci.e...原创 2019-03-02 21:12:03 · 285 阅读 · 0 评论 -
每日一题--有序数组合并
题目原文:You are given two sorted arrays, A and B, and A has a large enough buffer at the end to hold B. Write a method to merge B into A in sorted order.译文:A和B是两个有序数组(假设为递增序列),而且A的长度足以放下A和B中所有的元素, 写...原创 2019-03-05 21:04:33 · 351 阅读 · 0 评论 -
每日一题--位运算之指定位替换(Google推荐面试书--Cracking the Coding Interview)
题目原文:You are given two 32-bit numbers, M and N, and two bit positions, i and j. Write a method to set all bits between i and j in M equal to N (e.g., N becomes a substring of M located at i and sta...原创 2019-03-02 11:37:51 · 382 阅读 · 0 评论 -
每日一题--找二叉树中两个结点的第一个祖先结点(Google推荐面试书--Cracking the Coding Interview)
题目原文:Design an algorithm and write code to find the first common ancestor of two nodes in a binary tree. Avoid storing additional nodes in a data structure. NOTE: This is not necessarily a binary s...原创 2019-03-01 22:56:02 · 186 阅读 · 0 评论 -
机器学习ML/DL/NLP/CV面试学习书单
书籍:西瓜书、统计学习(最重要)、深度学习、机器学习实战、剑指 offer、百面机器学习(hulu)一份中外结合的 Machine Learning 自学计划:https://blog.csdn.net/sqc3375177/article/details/7964117120万、50万、100万的算法工程师,区别在哪?https://baijiahao.baidu.com/s?id=1...原创 2019-03-05 10:09:55 · 1242 阅读 · 0 评论 -
机器学习(Machine Learning)&深度学习(Deep Learning)资料MARK
如题:mark原文链接:https://www.jianshu.com/p/feb615cd9509?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation转载 2019-02-25 19:43:18 · 206 阅读 · 0 评论 -
每日一题--链表删除重复结点(Google推荐面试书--Cracking the Coding Interview)
题目原文:Write code to remove duplicates from an unsorted linked list.FOLLOW UPHow would you solve this problem if a temporary buffer is not allowed?译文:从一个未排序的链表中删除重复结点。进一步地,如果不允许使用临时的额外内存,你如何解决这...原创 2019-02-25 18:14:43 · 153 阅读 · 0 评论 -
每日一题--呼叫中心多线程增进版
说明本版本在昨天的基础上增加控制中心类CallCenter。功能上增加接线员人数控制,当呼叫用户多余接线员数量时提示“忙等待”,同时对接线员进行多线程并行式处理电话,但是在对经理人数和主管人数和并行处理上还未做控制。遇到的问题和之后有待改进的点:1,创建多线程只能调用全局函数,即类中的static函数,但是这里handelcall是虚函数,不能再定义为静态函数 ,故而取舍不继承,不要虚函数...原创 2019-02-24 21:37:41 · 257 阅读 · 0 评论