算法
文章平均质量分 79
好大的小飞虫
勤学似春起之苗,不见其增,日有所长;辍学如磨刀之石,不见其损,日有所亏
展开
-
面试算法总结系列——和为K的算法
这里引入几个面试中常见的算法题目,都不难1从一串有序数组中找到和为K的连续子数组。比如[1,2,2,3,5,6,7,8,9],k=5,那么答案就是[1,2,2],[2,3],[5]思路这个题目咋一看是没有任何思路的,只能暴力,两重for循环,这个代码贴一下 private List<List<Integer>> caTsum(int[] num, int lev)...原创 2020-04-15 15:21:11 · 1161 阅读 · 0 评论 -
动态规划——能否合成字符串
前言为什么写这篇博文我相信每一个程序猿都梦想过gg这种大厂,所以,算法都是必不可少的。目前刷的所有题目里面,其中动态规划是最难的一种了。想运用好动态规划,不是一件简单的事,动态规划有两个点很重要:1.结果能否拆分成子项,或者说,结果是否有前一个过程完全决定。2.动态转移方程。下面看几个实际的例子。题目题意这个题目是这样的,给定两个字符串s1和s2,再给定一个字符串s3,问由前两个...原创 2020-03-31 19:48:50 · 316 阅读 · 0 评论 -
面试算法总结:动态规划3
这里再来两个动态规划的经典题目。 题目一:一维数组的最大连续子序列。 这哥可以说是动态规划入门了,主要就是运用了‘0’,这个不多说,直接上代码。int max = Integer.MIN_VALUE;dp[0] = a[0]; for(int i=1;i<n;i++){ if(dp[i-1]<0){ dp[i] = a[i]; }else...原创 2018-04-18 00:37:25 · 178 阅读 · 0 评论 -
面试算法总结——单调栈的应用
笔试面试中,单调栈用的也特别多,属于数据结构类的,在这里先总结下,免得以后忘了。这里只讲应用,不太设计原理。 首先来个经典例题: 求矩形的最大面积。 这个题目就是典型的单调栈。 运用单点栈的时候,首先想到的,应该是,建立一个单调递增还是单调递减的单调栈。这里维护一个单调递增的单调栈。每次遇到一个小于当前栈顶的数时(假设这个数为tn),把当前栈中所有比tn大的数,全部弹出栈。弹出栈的过程中,...原创 2018-04-15 23:37:42 · 471 阅读 · 0 评论 -
面试算法题总结——动态规划小结2
动态规划是是我目前觉得遇见的最难的题目了。说起来到处都有他,但是真正用的时候,如果变个形状,又很难想到动态方程。所以,目前的动态规划,还是要多总结,找到思路。 抛砖迎玉,先来说个简单的:上台阶问题。现在有一层楼梯,共n层台阶。每次上台阶,可以上1层或者2层,问一共有多少层走完楼梯的方案。 这个题应该都很熟悉,很明显这个是斐波那契数列。怎么推算出来,这是个斐波那契数列的呢? 假设我站在第...原创 2018-04-15 21:24:07 · 245 阅读 · 0 评论 -
小米面经
小米面试已经有一段时间了,好多问题都不记得了,只能把记得的一些问题写下来。一面:线程间通信方式。线程安全类,hashmap的fail-fast原因,采用volatile 可见性,原子性,AtomicInteger。还有handler传递原理,ThreadHandler,IntentServer的原理。涉及到ThreadLocal。算法题很简单,翻转链表,3个3个翻转。原创 2017-10-13 15:28:02 · 1086 阅读 · 0 评论 -
头条面经
先来波面经,等这段时间秋招有空闲了再来好好总结。首先第一个,手写堆排快排。第二个,intent的作用,为什么采用intent去连接四大组件(因为在各大组件将要回收的时候,可以将其保留)。第三个,事件滑动机制,cancel原理,viewpager里面嵌套listview是怎么实现的,为什么没有滑动冲突。第四个,线程池原理。如果让我去设计线程池,怎么设计,http怎么设计线程池,bit原创 2017-09-28 00:18:47 · 1175 阅读 · 0 评论 -
动态规划小结1
经典二维动态规划二维动态规划很常见,笔试中最经常考。特点是随机选取一系列位置,即不连续。LCS(最长公共子序列问题,O(n^2))题目描述:给两个字符串L和S,求出其中最长的公共子序列(可以不连续) 思路:这是典型的动态规划,有好几种变形。 毋庸置疑,当前状态肯定可以由上一状态得出。 楼主喜欢在动态规划中先确定i,j,dp[i][j]表示的含义 在这里是i表示使用L中到第i...原创 2017-09-10 12:44:10 · 385 阅读 · 0 评论 -
面试算法总结系列——尺取法的应用,滑动窗口
最近准备笔试的过程中,发现好多算法题,有点套路的感觉,只怪自己平时积累不多,现在只能亡羊补牢了。 关于尺取法的概念我就不介绍了,网上这方面讲解很多,主要说一些应用的方面,积累下目前遇到的一些可以用尺取法可以来解决的题目,不定期更新下。 尺取法参考博客在此说明,我的梦想是进入网易,校招进入网易已经不可能了,我就在这里立一个誓言,将来一定会进网易尺取法的应用简单可以理解为,所有求连续的一段区原创 2017-09-09 14:12:49 · 440 阅读 · 0 评论 -
面试算法理解篇——堆排序的应用
前言 这篇仍然是面试笔试中的一篇小总结。再次申明:不足之处请各位不吝赐教。堆排序算法首先说说什么叫堆,以及和BST(二叉查找树,二叉排序树),AVL(平衡二叉树)的区别。 堆在内存中很常见,一般内存中分配都是以堆栈分配的(这里原谅渣渣我对jvm虚拟机还没有足够深的认识,这里不敢瞎说)。堆考的最多的有两种,最大堆和最小堆。简单来说:最大堆:树的父亲节点比它的子结点大,即...原创 2017-09-12 01:14:57 · 443 阅读 · 0 评论 -
笔试中背包问题的应用
写在前面: 这是小菜鸟我自己的一点小总结,为了在面试中更加得心应手。后面遇到的相关问题不定期更新到这篇博文中,如果有什么错误请各位大神不吝赐教,如果有什么问题请各位多包涵。更多背包相关问题参考:ACM背包小总结笔试题中,经常会遇到相关背包问题的变形,今天总结一下,下次遇到相关变形,及时更新,大家如果有什么比较好的相关变形,可以在下面留言,大家一起进步。01背包讲讲01背包的应用,01背包的主要原创 2017-09-09 23:30:26 · 788 阅读 · 0 评论 -
位的巧妙应用
前言 前几天做了一个笔试题目,当时没多想,今天翻看博客才发现,原来每个笔试题都藏的很深啊。原文链接:http://blog.csdn.net/u010429424/article/details/77856133。 先说题目 面试题:8个试剂,其中一个有毒,最少多少只小白鼠能检测出有毒试剂。方法一:二分这个题目,第一反应就是二分,44分,两个老鼠各喝四瓶,活下来的接着用。22分,再拿一只新原创 2017-09-16 20:08:57 · 437 阅读 · 2 评论 -
丑数的思想
前言这同样是算法思想的一篇总结篇,由面试问题得来。在leetcode上有这样一道题目:求取第n个丑数。质因子只有2,3,5的数称为丑数,比如4(2*2),9(4*2),10(2*5),14(2*7),18(2*9)…….题目连接即解法戳这里解法1: 暴力就不说了。解法2: 仔细想一想,这里面所有的丑数都是由前面旧的丑数和(2或3或5)构成的。假设之前有...原创 2017-09-15 11:44:49 · 279 阅读 · 0 评论 -
算法总结系列——数组的巧妙运用+动态规划
做完今天美团的912笔试编程题。感觉这个题目很巧,让我深刻领略了数组的巧妙运用。决定记录下,下次再遇到相关数组的巧妙运用时更新下。平时经常用数组来进行一些巧妙的事情,比如,用数组存储a-z所有字符在这个字符串中出现的次数。我们经常会把需要用到的值直接当做数组下表来用,这样就不需要再去遍历数组来得到想要的值。比如将要讲述的题目: 题目大意如下,有n个数(2<=n<=10^5),从中选取任意两个数,原创 2017-09-15 02:33:38 · 416 阅读 · 0 评论 -
2017网易笔试矩阵快速幂
昨天网易笔试,竟然除了矩阵快速幂的题目,日了狗了,离开acm好久了,忘得差不多了,囫囵吞枣补一下吧,哎,太菜了!题目如下小易拥有一个拥有魔力的手环上面有n个数字(构成一个环),当这个魔力手环每次使用魔力的时候就会发生一种奇特的变化:每个数字会变成自己跟后面一个数字的和(最后一个数字的后面一个数字是第一个),一旦某个位置的数字大于等于100就马上对100取模(比如某个位置变为103,就会自动原创 2017-03-26 13:55:29 · 661 阅读 · 0 评论