自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Bryan__的专栏

https://github.com/YouChouNoBB

  • 博客(20)
  • 资源 (3)
  • 收藏
  • 关注

原创 数据挖掘/机器学习/算法岗2017校招面试总结

目前就职于腾讯,想内推朋友可以发我简历(校招/社招都要),邮箱[email protected],注明岗位和工作城市。这个岗位叫法很多,算法岗,数据挖掘岗,机器学习岗,基础研究等等,总结一下从16年9月校招的面试情况。百度:师姐给我内推的,一面聊了2个半小时,基本在写代码。用MapReduce写好友推荐,在一堆单词里面找出现次数最多的k个;设计一个栈,O(1)时间返回最值;求多叉树深...

2016-09-26 19:09:26 58161 66

原创 美团的笔试题,怎么拿红包金额最大

思路:看题目应该是想考动态规划,所以第一步是建立动态转移方程dp(i)=max( a[i]+dp(i-2),dp(i-1))也就是第i个位置的红包有两种方式要么拿,拿了就不能拿i-1的红包,解是a[i]+dp(i-2)要么不拿,不拿的解就是dp(i-1)但是需要考虑另外一个问题,就是首尾相连也就是拿了第一个就不能拿最后个那么又可以分成2种方式,第一个拿与不拿

2016-09-11 17:07:51 5846 6

原创 机器学习降维方法

特征降维方法包括:Lasso,PCA,小波分析,LDA,奇异值分解SVD,拉普拉斯特征映射,SparseAutoEncoder,局部线性嵌入LLE,等距映射Isomap。1. LASSO通过参数缩减达到降维的目的。LASSO(Least absolute shrinkage and selection operator, Tibshirani(1996)) 该方法是一种压缩估计

2016-09-09 16:21:17 5340

原创 剑指offer:二叉搜索树的后序遍历序列

题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。思路:二叉树的后序遍历,根节点在最后一个位置,搜索树就是排序树,所以左子树的所有元素肯定是小于根节点,右子树的所有元素大于等于根节点于是可以把序列划分为两个部分,左右子树,然后再递归的划分下去就行public class Solution {

2016-09-05 16:56:50 828

原创 剑指offer:删除排序链表中重复的结点

题目:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5思路:用递归删除,遇到相同的往后走,返回第一个不相同的节点/* public class ListNode { int val; ListNode next = null; Li

2016-09-05 16:38:48 2355

原创 平衡二叉树

题目:输入一棵二叉树,判断该二叉树是否是平衡二叉树。思路:后续遍历二叉树,同时得到子树的深度,判断子树的深度是否满足平衡条件即可public class Solution { //后续遍历时,遍历到一个节点,其左右子树已经遍历 依次自底向上判断,每个节点只需要遍历一次 private boolean isBalanced=true; public boolean I

2016-09-05 15:56:25 588

原创 剑指offer:把数组排成最小的数

题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路:把数组排序,自定义排序规则,规则就是相邻的两个数合并之后比较大小,那么整个数组排完序之后拼接起来就是最小的import java.util.ArrayList;import java.util.Coll

2016-09-05 15:51:04 587

原创 TopK的3种解法

题目:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。思路1:如果k比较大,可以直接把数组划分为2个部分,一部分为[0,k-1] ,一部分为【k,n-1】 遍历第二部分,和第一部分的最大值比较,如果更小则交换,遍历结束第一部分就是topk的结果 时间复杂度是k(n-k)思路2:利用

2016-09-05 15:11:32 1573

原创 二叉树的深度

题目:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。思路:递归返回左右子树中深度较大者+1,树为空返回0/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(in

2016-09-05 14:11:10 679

原创 两个链表的第一个公共节点

题目:输入两个链表,找出它们的第一个公共结点。思路:定义两个指针,一起走,如果其中一个走到尾部,则该指针指向另一个链表头部。如果有公共节点,这这两个指针一定会相遇因为假如长度不一样的话,其中p1先走完,这时p2刚好走完了p1的长度,也就是剩下的长度为两个链表的差此时p1指向p2的链表,当p2走完时,p1刚好走完了两个链表的差,此时p2指向了之前p1指向的链表,这个时候两个链表同时走,一

2016-09-04 14:14:58 677

原创 二叉树的层次遍历

题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路:用一个队列,保存根节点,取出来之后再展开import java.util.ArrayList;import java.util.LinkedList;import java.util.Queue;/**public class TreeNode { int val = 0; TreeNode left

2016-09-04 13:45:56 802

原创 树的子结构

题目:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路1:直接遍历两棵树返回序列,判断序列是否是子序列思路2:比较AB根节点,如果不同,再递归比较A的左子树右子树和B/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode righ

2016-09-04 00:55:09 509

原创 合并两个排序的链表

题目:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。思路:利用递归,谁小谁做头结点,然后head.next=Merge() 来递归完成/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.va

2016-09-04 00:17:40 643

原创 单链表反转

题目:输入一个单链表,反转该单链表思路:用head保存当前位置,利用前驱和后继指针来保存上一个和下一个指针         记住4个步骤:1,先保存head.next 不然断链了2,反转链表3,pre前移到head的位置4,head前移到next的位置/*public class ListNode { int val; ListNode next = nu

2016-09-03 23:42:44 542

原创 链表中倒数第k个结点

题目:输入一个链表,输出该链表中倒数第k个结点。思路:定义两个指针,last先走k-1步到达第k个节点,然后同时向后走,当last为空的时候,返回pre就是第k个节点/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val

2016-09-03 23:17:48 477

原创 数值的整数次方

问题:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。思路:递归:n为偶数,a^n=a^n/2*a^n/2;n为奇数,a^n=(a^(n-1))*apublic class Solution { public double Power(double base, int exponent) { i

2016-09-03 22:53:16 1015

原创 二进制中1的个数

题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思路:整数的二进制减1,会把最右边的从一开始所有数取反,比如1100 减一为1011然后把这两个数做与运算 1100 & 1011 =1000 会发现少了一个1,于是可以做一个计数来计算1的个数public class Solution { public int NumberOf1(int n) {

2016-09-03 22:40:43 924

原创 剑指offer:青蛙跳台阶&变态跳台阶

题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路:对于本题,前提只有 一次 1阶或者2阶的跳法。a.如果两种跳法,1阶或者2阶,那么假定第一次跳的是一阶,那么剩下的是n-1个台阶,跳法是f(n-1);b.假定第一次跳的是2阶,那么剩下的是n-2个台阶,跳法是f(n-2)c.由a\b假设可以得出总跳法为: f(n

2016-09-03 21:58:04 775

原创 栈的压入、弹出序列

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路:用一个辅助栈来保存入栈序列的数据,保存一个出栈的索引,每次入栈之后检查栈顶和出栈序列元

2016-09-03 20:55:04 607

原创 java实现重建二叉树

题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路:根据题目给出的前序遍历、后序遍历数组,首先找出根节点然后再根据中序遍历找到左子树和右子树的长度,分别构造出左右子树的前序遍历和中序遍

2016-09-02 12:10:34 3152

机器学习/数据挖掘岗面试准备

参加各大公司面试时准备的复习资料,已经拿到百度,腾讯,华为offer

2016-09-26

9个大数据竞赛方案分享,其中6次获得top10

对参加过的9个大数据竞赛一个浓缩的解决方案总结 其中9个比赛6次获得top10

2016-06-15

数据挖掘比赛经验

之前应老师要求,跟学弟学妹们吹了下牛。只准备了一天,水平有限,看看就好

2016-05-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除