自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (5)
  • 收藏
  • 关注

原创 TopK问题

1、1000万video用id(long)标识,每个video有一个分数,取出其中分数高的前1000个。public class Video { long id; double score;}public class Solution { public Video[] getTopK(ArrayList<Video> data, int k){ Queue<

2017-08-08 23:13:43 269

原创 剑指offer题目

二维数组的查找在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路:从右上角开始找,这样每次能够去掉一行或者一列。public class Solution { public boolean Find(int target, int [][] array)

2017-04-16 17:41:31 706

原创 排序

快排public class Solution { public void quickSort(int[] a, int left, int right) { int index = partition(a, left, right); if(left < index - 1) quickSort(a, left, index - 1); if

2017-04-11 18:09:34 281

原创 hihoCode----背包问题

0-1背包问题且说上一周的故事里,小Hi和小Ho费劲心思终于拿到了茫茫多的奖券!而现在,终于到了小Ho领取奖励的时刻了!小Ho现在手上有M张奖券,而奖品区有N件奖品,分别标号为1到N,其中第i件奖品需要need(i)张奖券进行兑换,同时也只能兑换一次,为了使得辛苦得到的奖券不白白浪费,小Ho给每件奖品都评了分,其中第i件奖品的评分值为value(i),表示他对这件奖品的喜好值。现在他想知道,凭借他手

2017-04-08 15:10:09 504

原创 LeetCode专题----Math

7. Reverse IntegerReverse digits of an integer.Example1: x = 123, return 321 Example2: x = -123, return -321Have you thought about this? Here are some good questions to ask before coding. Bonus point

2017-04-07 17:47:32 371

原创 LeetCode专题----Design

146. LRU CacheDesign and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and put.get(key) - Get the value (will always be positive) of th

2017-04-07 17:01:17 251

原创 LeetCode专题----String

151. Reverse Words in a StringGiven an input string, reverse the string word by word.For example, Given s = “the sky is blue”, return “blue is sky the”.Update (2015-02-12): For C programmers: Try to

2017-04-06 20:57:51 414

原创 LeetCode专题----LinkedList

19. Remove Nth Node From End of ListGiven a linked list, remove the nth node from the end of list and return its head.For example,Given linked list: 1->2->3->4->5, and n = 2.After removing the

2017-03-22 22:29:17 527

原创 LeetCode专题----DFS

207. Course ScheduleThere are a total of n courses you have to take, labeled from 0 to n - 1.Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is

2017-03-21 23:09:07 553

原创 2017互联网笔试题汇总

跑步(奇虎360 2017春招真题)题目描述:小明同学喜欢体育锻炼,他常常去操场上跑步。跑道是一个圆形,在本题中,我们认为跑道是一个半径为R的圆形,设圆心的坐标为原点(0,0)。 小明跑步的起点坐标为(R,0),他沿着圆形跑道跑步,而且一直沿着一个方向跑步。回到家后,他查看了自己的计步器,计步器显示他跑步的总路程为L。 小明想知道自己结束跑步时的坐标,但是他忘记自己是沿着顺时针方向还是逆时针方向

2017-03-19 23:47:27 1990

原创 LeetCode专题----递归

1、111. Minimum Depth of Binary Tree Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node. 分析:在

2016-12-24 12:00:25 929

原创 LeetCode专题----Tree

1、404. Sum of Left Leaves Find the sum of all left leaves in a given binary tree. 思路:这题主要学习一下递归,使用递归应该想清楚递归的终止条件,终止时要返回的结果。/** * Definition for a binary tree node. * public class TreeNode { *

2016-12-23 22:04:41 573

原创 LeetCode专题----Array

1、414. Third Maximum Number 题目:Given a non-empty array of integers, return the third maximum number in this array. If it does not exist, return the maximum number. The time complexity must be in O(n).

2016-12-21 21:29:22 814

原创 LeetCode专题----动态规划

1、300. Longest Increasing Subsequence Given an unsorted array of integers, find the length of longest increasing subsequence.For example, Given [10, 9, 2, 5, 3, 7, 101, 18], The longest increasing s

2016-07-20 16:42:18 560

原创 LeetCode专题------位操作

1、LeetCode190. Reverse Bits Reverse bits of a given 32 bits unsigned integer.For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represente

2016-07-15 15:25:50 489

原创 LeetCode 371 : Sum of Two Integers(Java)

题目: Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -.Example: Given a = 1 and b = 2, return 3.解题思路:用异或算不带进位的和,用与并左移一位来算进位,再把两者相加即可,直到进位为全0。递归的解法如下:public

2016-07-15 10:05:20 342

原创 面试题总结-阿里神马和通联数据(算法)

1、两个很大的列表A,B(内存装不下),列表里面是字符串,如何找出A中包含B的所有字符串?要求优化,提示:搜索引擎。 2、给一个像手机键盘那样的数字和字符的对应关系,给你一串数字和一个词典,如何找出这串数字对应的字符的组合成的并且在词典中的所有单词?要求优化。 答:当时考虑了树结构存储 3、分块的大数据内存装不下,如何找出这些数据中出现频次最高的前1000个? 答:用哈希来分桶,把所有相同的

2016-01-30 20:41:27 2588

原创 笔试题-搜狐手机网Python开发工程师

1、熟悉哪些语言?了解哪些web框架? web 框架的目的:向程序员隐藏了处理 HTTP 请求和响应相关的基础代码。至于隐藏多少这取决于不同的框架,Django 和 Flask 走向了两个极端:Django 包括了每种情形,几乎成了它致命的一点;Flask 立足于“微框架”,仅仅实现 web 应用需要的最小功能,其它的不常用的 web 框架任务交由第三方库来完成。 Python web 框架都

2016-01-30 20:02:09 654

原创 面试题总结-搜狐手机网Python开发工程师

1、Python中range()和xrange()区别? xrange()不会生成一个长列表,而是产生一个生成器2、Python装饰器? 装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志、性能测试、事务处理等。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用。概括的讲,装饰器的作用就是为已经存在的对象添加额

2016-01-29 14:34:01 994

原创 LeetCode 155 : Min Stack (Java)

解题思路:用java写的话有个需要注意的地方就是由于Stack中的元素用了泛型,而泛型不支持基本类型,所以需要基本类型的包装类。而包装类不同于基本类型的是包装类是引用,要比较相等不能简单使用==,要使用equals方法。 LeetCode官网unlock的提示: Hints:Consider space-time tradeoff. How would you keep track of th

2015-12-12 14:58:09 2572 1

原创 LeetCode 278 : First Bad Version (Java)

解题思路:二分查找的思路,但是不能用递归,亲测会stackoverflow。那就只能用循环了,要想清终止条件,感觉蛮绕的,自己有待加强,要分析好久才能理清。需要注意的是,在取二分查找的中间值时,不要使用左右相加后再除以2的方式,这样可能会在计算时产生溢出。/* The isBadVersion API is defined in the parent class VersionControl.

2015-12-05 22:02:53 421

原创 LeetCode 6 : ZigZag Conversion (Java)

解题思路:这个题目主要是找规律。最后一行和第一行两个元素下标之间相差numRows * 2 - 2,中间的行按照元素两两配对,这两个元素下标之间的距离为step - i * 2。public class Solution { public String convert(String s, int numRows) { if (numRows == 1) return s;

2015-12-05 21:02:54 341

原创 LeetCode 125 : Valid Palindrome (Java)

解题思路:两个指针,一开始分别指向头和尾,对于两个指针所指的都是字母的情况进行判断,如果二者不相等并且相差的ASCI码绝对值也不是32,返回false。这里有个加快运行时间的技巧是不要先把所有的非字母和数字的字符去掉或者把大写转为小写,直接在运行中一个个来判断,因为有可能还未判断完所有的字符已经返回false了。如果一开始就全部处理了显然做了很多无用功。最终击败数目93.68%,创了我的新高。pub

2015-12-05 20:02:53 770

原创 LeetCode 7 : Reverse Integer (Java)

解题思路:主要是溢出情况的判断,在乘10之前判断当前值是否大于最大整数除10或者小于最小整数除10,如果满足条件就会溢出,按题意返回0。public class Solution { public int reverse(int x) { int res = 0; while(x != 0){ if(res > Integer.MA

2015-12-05 18:48:09 351

原创 LeetCode 28 : Implement strStr() (Java)

解题思路:扫描。。。时间复杂度O(N*M)。据说最好的算法是KMP算法,不过我还不会。。。public class Solution { public int strStr(String haystack, String needle) { if(haystack.length() == 0 && needle.length() == 0) { ret

2015-12-04 22:20:33 211

原创 LeetCode 303 : Range Sum Query - Immutable (Java)

解题思路:用一个长度为10的数组来存储数字0-9在两个字符串中出现的状态。如果相同位置的数字也相同,则直接把A的技术增1即可。否则,处理见程序。解释一下,数组一开始所有元素都为0,由于数组中对应位置的值secret只有++的权利,guess只有–的权利,所以如果判断++之后对应位置的元素还是小于等于0,说明该元素在guess中出现过。反之同理。同时两者的++和–也有相互抵消的作用,保证了在一个字符串

2015-12-03 22:50:26 514

原创 LeetCode 299 : Bulls and Cows (Java)

解题思路:用一个长度为10的数组来存储数字0-9在两个字符串中出现的状态。如果相同位置的数字也相同,则直接把A的技术增1即可。否则,处理见程序。解释一下,数组一开始所有元素都为0,由于数组中对应位置的值secret只有++的权利,guess只有–的权利,所以如果判断++之后对应位置的元素还是小于等于0,说明该元素在guess中出现过。反之同理。同时两者的++和–也有相互抵消的作用,保证了在一个字符串

2015-12-03 22:02:39 310

原创 LeetCode 67 : Add Binary (Java)

解题思路:从末尾依次对应相加来求,转成int中的相加会使代码比较简洁,因为可以用/和%来分别求出进位和当前往结果中添加的位。然后,把较长的字符串剩下的部分和进位相加放入结果。最后,还要判断进位此时是否为1,如果为1,则需要再往结果中添加1,否则返回结果。public class Solution { public String addBinary(String a, String b) {

2015-12-03 21:08:20 1027

原创 LeetCode 14 : Longest Common Prefix (Java)

解题思路:最长公共前缀肯定不会超过最短字符串的长度。所以先获得最短字符串的长度。然后一个二层循环,外层循环是最短字符串长度的每个位置,内层循环是每个字符串对应的这个位置的字符,然后比较所以字符串这个位置的字符是否相等,如果相同,将该字符加入结果中,否则返回结果。public class Solution { public String longestCommonPrefix(String[]

2015-12-03 20:25:09 436

原创 LeetCode 38 : Count and Say (Java)

解题思路:我表示这道题对我来说关键就是理解题意。。。真的没理解题意,网上查了才恍然大悟。首先说一下题意。n=1时输出字符串1;n=2时,数上次字符串中的数值个数,因为上次字符串有1个1,所以输出11;n=3时,由于上次字符是11,有2个1,所以输出21;n=4时,由于上次字符串是21,有1个2和1个1,所以输出1211。依次类推,写个countAndSay(n)函数返回字符串。理解题意后,关键就是如

2015-12-02 22:50:52 2174

转载 关于C++语言的一些小知识点

命名空间(namespace):类似于Java中package的概念。它用来声明一段数据的存储空间。不同namespace中的变量函数可以重名。namespace可以嵌套。using namespace来释放变量函数,使其访问不那么麻烦。全局命名空间无需指明。&表示取地址,是取地址,你的地址可以是任何类型,*是指针,是取地址的内容 。MYCLASS*的意思:指向某个对象的指针,此对象的类型为MY

2015-12-02 16:55:45 360

原创 LeetCode 290 : Word Pattern (Java)

解题思路:用一个map来存放模式和单词的对应形式,注意由于模式和单词是双向匹配,所以如果来了一个新的模式和单词对应形式,要查看map的keys里面是否已经存在该模式,如果存在,再检查该模式对应的单词是否和新单词一样,如果不一样,返回false。如果不存在该模式,则检查map的values里面是否已经存在该单词,如果存在,则说明对应该单词的模式和新来的模式不一样,返回false。如果map里即不存在该

2015-12-02 11:04:39 454

原创 LeetCode 20 : Valid Parentheses (Java)

解题思路:这是一道典型的可以用栈来解决的问题。做一个空栈。一个个读入字符直到字符串结尾。如果字符是一个开放符号,则将其推入栈中。如果字符是一个封闭符号,则当栈空时报错。否则,将栈元素弹出。如果弹出的符号不是对应的开放符号,则报错。在字符串结尾,如果栈非空则报错。public class Solution { public boolean isValid(String s) {

2015-12-02 10:53:48 838

原创 LeetCode 19 : Remove Nth Node From End of List (Java)

解题思路:一开始我的做法是先遍历一遍取得长度,然后长度减去n就知道要删除正着数第几个元素,结果题目要求one pass。那就只能用两个指针,一个快指针先走n步,一个慢指针从头开始走,这样当快指针走到尾部的时候,慢指针所指的就是要删除元素的前一个元素。/** * Definition for singly-linked list. * public class ListNode { *

2015-12-01 20:02:39 1483

原创 LeetCode 58 : Length of Last Word (Java)

解题思路:获取字符串长度,从后往前判断,关键是要理清几种情况。如果字符串尾部是空格,则什么都不做,直到遇到第一个非空格字符,这时候count开始计数,直到再次遇到空格或者i<0返回count。public class Solution { public int lengthOfLastWord(String s) { if(s == null) ret

2015-12-01 19:19:54 343

原创 LeetCode 36 : Valid Sudoku (Java)

解题思路:共有27个九宫格,每个九宫格9个元素,所以初始化一个27*9的数组来表示某个元素在某个九宫格里是否出现过,0表示没出现,1表示出现过。这个27*9的数组前0-8行用来存放1*9的9个九宫格,第9-17行用来存放9*1的9个九宫格,第18-26行用来存放3*3的9个九宫格。位于第i行第j列的元素k,分别位于27*9的数组的三个地方,第i行第k列,第j+9行第k列,第i/3*3+j/3+18行

2015-12-01 08:43:08 590

原创 LeetCode 111 : Minimum Depth of Binary Tree (Java)

解题思路:找最小要比找最大复杂,因为递归对于最大来说如果一个节点只有左子树或右子树,它无需额外考虑,仍可以一时同仁对左右子树调用递归,只不过对null的子树返回的是0,而在比较取较大者时会自动放弃较小的0值。但对于最小来说,比较的时候是取较小者,不能对null的子树返回0,否则取较小的时候会取该子树,显然这样不符合要求,只有叶子节点才可以返回0。针对这种情况有两种解决方案,一种是分情况讨论,另一种是

2015-12-01 08:19:46 748

原创 LeetCode 160 : Intersection of Two Linked Lists (Java)

解题思路:一开始想通过反转链表来做,可发现要求不能改变原来的链表结构,当然反转也可以,大不了再转回来,麻烦。比较简单的做法就是考虑到题目的意思是两个链表要有交叉肯定是在从两个链表相同元素位置一直持续到结尾,所以可以先获得两个链表的长度,使较长的链表先移动到剩下的和较短的链表长度相同,这要就可以同步移动两个链表来比较了。有个注意点是题目中两个元素交叉是指这Node相等,而不是只是Node的值相等。/*

2015-11-30 20:24:25 505

原创 LeetCode 9 : Palindrome Number (Java)

解题思路:不断取出该整数的头尾的数字进行比较,比较完需要取出头尾的数字。public class Solution { public boolean isPalindrome(int x) { if(x < 0) { return false; } int len = 1; while(x/len>=10)

2015-11-29 22:53:05 243

原创 LeetCode 172 : Factorial Trailing Zeroes (Java)

解题思路:只有所有阶乘的数里面出现因子2和5相乘才会有0出现。又容易观察到2的个数总是大于5的个数,所以本题转化为求所有小于等于当前n的正整数中因子5的个数。例如n = 30。n/5 = 6。此处的6并不能代表5的个数,因为25中包含两个5。所以求5的个数可以表示成SUM(N/5^1, N/5^2, N/5^3…)。public class Solution { public int tr

2015-11-27 11:42:03 364

统计学习方法

李航的统计学习方法,很经典的学习机器学习的书籍,本书重理论,可以配合机器学习实战这本书一起看,理论实践相结合

2015-11-17

机器学习实战(中文版+英文版+源代码)

机器学习实战,很有用的机器学习书籍,书中代码Python写成,实战内容要比理论多,适合那些喜欢动手的学习

2015-11-17

算法导论中文版

最经典的算法书籍,算法导论,中文版,希望对大家有所帮助

2014-12-21

软件开发常用词汇

软件开发常用的词汇,很全,中英文对照,以后看英文技术文档随看随查

2014-12-20

thinking in Java 中文版 第四版

最经典的学习Java的书籍,中文版第四版,非扫描版,很清晰

2014-12-19

空空如也

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

TA关注的人

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