- 博客(38)
- 资源 (11)
- 收藏
- 关注
原创 剑指offer 面试题32—从1到n整数中1出现的次数
题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1的数字有1,10,11,12。所以1一共出现了5次。解法一:O(nlogn)基本思想:累加1到n每个整数中1出现的次数。n个数,每个数有O(logn)位。#include using namespace std;int numberof1(int n)
2015-04-30 17:09:12 1093
原创 剑指offer 面试题29—数组中出现次数超过一半的数字
题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。解法一:先将数组排序,然后出现次数超过一半的数字就是a[n/2+1],时间复杂度O(nlgn)。解法二:O(n)基本思想:消除原理:在遍历数组的时候保存两个值:一个
2015-04-30 11:03:30 849
原创 剑指offer 面试题21.22—栈操作以及判断弹出序列
题目:1.定义栈数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push以及pop的时间复杂度都是O(1)。2.输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序, 序列 4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,
2015-04-30 09:56:35 817 2
原创 剑指offer 面试题20—顺时针打印矩阵
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如:如果输入如下矩阵:1 2 3 45 6 7 89 10 11 1213
2015-04-29 19:25:44 733
原创 剑指offer 面试题14—调整数组顺序使奇数位于偶数前面
题目:输入一个整数数组,实现一个函数来调整该数组中数组的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。解法一:O(n^2)从头扫描数组,每碰到一个偶数,拿出这个数字,并把位于这个数字后面的所有数字往前挪动一位。挪完之后在数组的末尾有一个空位,这时把该偶数放入这个空位中。由于每碰到一个偶数就需要移动O(n)个数字,因此总的时间复杂度是O(n^2).
2015-04-29 19:05:17 884
原创 编程之美2.19—区间重合判断
题目:输入两个表示区间范围的整数[x,y]然后输入N个无序区间[x1,y1], [x2, y2], [x3, y3]...求解第一次输入的区间是否在N个无序区间组合成的大区间中。基本思想:先用区间的左边界值对目标区间进行排序O(nlogn),对排好序的区间进行合并O(n),对每次待查找的源区间,用二分查出其左右两边界点分别处于合并后的哪个源区间中O(logn),若属于同
2015-04-28 22:58:32 1126
原创 编程之美3.3—计算字符串的相似度
题目:许多程序会大量使用字符串。对于不同的字符串,我们希望能够有办法判断其相似程序。我们定义一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为: 1.修改一个字符(如把“a”替换为“b”); 2.增加一个字符(如把“abdd”变为“aebdd”); 3.删除一个字符(如把“travelling”变为“traveling”);比如,对于“abcdefg”和“abc
2015-04-28 13:35:33 1132
原创 编程之美3.1—字符串移位包含问题
题目:给定两个字符串s1和s2,要求判定s2是否能够被s1做循环移位得到的字符串包含。解法一:O(N^2)对s1进行循环移位,在进行字符串包含的判断。//s1,s2int len = strlen(s1);for(i:len){ char t=s1[0]; for(j:len-1) s1[j]=s[j+1]; s1[len
2015-04-28 11:54:02 929 2
原创 编程之美2.18—数组分割
题目:有一个没有排序,元素个数为2N的正整数数组。要求把它分割为元素个数为N的两个数组,并使两个子数组的和最接近。基本思想:假设数组A[1..2N]所有元素的和是SUM。模仿动态规划解0-1背包问题的策略,令S(k, i)表示前k个元素中任意i个元素的和的集合。显然:S(k, 1) = {A[i] | 1S(k, k) = {A[1]+A[2]+…+A[k]}
2015-04-28 11:37:54 1065
原创 编程之美3.6—判断两个链表是否相交
解法一:判断第一个链表的每个节点是否在第二个链表中,O(M*N);解法二:对第一个链表的节点地址hash排序,建立hash表,然后对第二个链表的每个节点的地址查询hash表,如出现,相交时间复杂度O(M+N),空间复杂度O(M)。解法三:把第二个链表接在第一个链表后面,得到的链表有环,相交,否则,不相交。‘第二个链表的表头一定在环上,只需从第二个链表开始
2015-04-27 23:03:15 781
原创 编程之美2.12—快速寻找满足条件的两个数
题目:能否快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值M。解法一:穷举:O(N^2)解法二:先排序,再二分查找M-a[i],排序O(NlogN),每个数二分查找O(NlgoN)总的时间复杂度O(NlogN)解法三:hash表,给定一个数字,根据hash映射查找另一个数字是否在数组中,O(1).总的时间复杂度O(N),
2015-04-27 22:41:05 965
原创 编程之美2.17—数组循环移位(旋转数组)
题目:把一个含有N个元素的额数组循环右移K位,要求时间复杂度O(N),且只允许使用两个附加变量。解法一:O(N^2)每次将数组中的元素右移移位,循环K次。当K>N时,右移K位和右移K%N位是一样的。MyShift(int a[],int N,int K){ K%=N; while(K--) { int t=a[N-1];
2015-04-27 22:17:59 852
原创 华为机试—给定字符串中找出单词
题目:在给定字符串中找出单词(“单词”由大写字母和小写字母字符构成,其他非字母字符视为单词的间隔,如空格、问号、数字等等;另外单个字母不算单词);找到单词后,按照长度进行降序排序,(排序时如果长度相同,则按出现的顺序进行排列),然后输出到一个新的字符串中;如果某个单词重复出现多次,则只输出一次;如果整个输入的字符串中没有找到单词,请输出空串。输出的单词之间使用一个“空格”隔开,最后一个单词后不
2015-04-27 12:07:01 1203
原创 互联网公司Android客户端面试 知识点
Android内存回收机制、DVM和JVM区别、DVM内存分配OOM,如何解决OOMActivity4种launch mode、Activity怎么启动EventBus网络如何异步加载Cache缓存机制Universal-Image-Loader开源框架的实现原理Java、Android线程池,如何自定义线程池Android定时器的实现代码实现判断手机有无内存卡StackOverflow
2015-04-26 21:37:44 932
原创 阿里 Java面试 知识点
===================================基础知识篇===================================多态 java反射 java序列化 内部类作用 final作用 interface和abstractClass区别 synchronized和volatile区别 hashmap和hashtable的区别
2015-04-26 20:47:22 1235
原创 腾讯 2016届实习生招聘笔试
腾讯2015(2016届)实习生校招笔试,除了选择题外,还有五道大题,其中三道算法类的题。第一题:抽奖算法实现题目:一个商场进行一场抽奖活动,其中有两个奖项,第一个奖项A抽中的概率是1/6,第二个奖项B抽中的概率是5/6;用C语言编码实现这个抽奖程序。 题目通过一个XML文档给出。基本思想:生成一个随机数随机数对6取余,得到的余数一定是0、1、2、3、4
2015-04-26 17:21:24 1248
原创 小米 2016届实习生招聘笔试
第一部分:三道编程题。1.两个整数的二进制表示中,求不同位数的个数。 比如输入1和2,01和10不同位数为2,故输出为2.2.选择买入卖出股票的最大收益,要求交易次数为两次,但是第二次买入必须在第一次卖出的时间节点之后。 比如{3,8,5,1,7,8},最大收益为8-3加上8-1,等于12.3.求linux文件目录中两个分支的最近父节点。 root
2015-04-26 15:03:12 1317
原创 360 2016届实习生招聘笔试 综合题
第一部分四十道选择题基础知识,比较BAT的笔试题,相对难度低一点。第二部分两道编程题1,题目:在一个二维数组中,每一行都按照从左到右递减的顺序排序,每一列都按照从上到下递减的顺序排序。输入这样的一个二维数组和一个整数,判断数组中是否含有该整数,如有输出整数的位置。2,题目:选镇长,镇子里有N个人,要选出一个镇长,镇长要求:镇长认识所有人,所有人都认识镇长,编
2015-04-26 11:51:12 1950
原创 位、字节、字符、汉字的关系
1 bit 二进制数据1 byte = 8 bit1 字母 = 1 byte = 8 bit1 汉字 = 2 byte = 16 bit1. bit:位一个二进制数据0或1,是1bit;2. byte:字节1 byte = 8 bit3.一个英文字符占一个字节;1 字母 = 1 byte = 8 bit4. 一个汉字占2个字节;
2015-04-26 10:55:14 1400
原创 编程之美2.2—阶乘计算
题目:1.给定一个整数N,那么N的阶乘N!末尾有多少个0?如N=10,N!=3628800,N!的末尾有两个0;2.求N!的二进制表示中最低位1的位置。问题1解法一:基本思想:N!=K*10^M,那么N!末尾有M个0.N!=2^X*3^Y*5^Z,M=min(X,Z)。因为X>=Z,所以M=Z。计算i(i=1,2,---,N)的因为分解中5的指数,求和。re
2015-04-24 15:01:47 924
原创 华为机试—条条道路通罗马
题目:基本思想:这是一个深搜问题,不过呢,你可以看到题目截图中有答案提示:城市数目较多,因此不能使用完全遍历,无法满足时间复杂度要求。所以需要对数据做一下预处理,也就是将map转换为链表形式的,本来map应该是只有0,1的值,表示有路径或者没路径。不过为了节约点内存(虽然没什么必要),所以map复用。当前节点i如果和另外的节点j相连,则将节点j放在map中。第0个元素存
2015-04-24 14:29:46 1646 1
原创 剑指offer 面试题10—二进制中1的个数
题目:实现一个函数,输入一个整数,输出该数二进制表示中1的个数。如9的二进制是1001,因此输入9输出2。解法一:可能死循环int num1(int n){ int count =0; while(n) { if(n&1) count++; n=n>>1; } return count;
2015-04-24 11:37:54 950
原创 剑指offer 面试题8—旋转数组的最小数字
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组(3,4,5,1,2)位{1,2,3,4,5}的一个旋转,该数组的最小值为1.基本思想:二分查找,p1指向a[0],p2指向a[len-1]。如果a[mid]>a[p1],则最小值在后半段,p1=mid;如果a[mid]特殊情况:
2015-04-23 17:09:05 832
原创 剑指offer 面试题4—替换字符串中空格
题目:实现一个函数,把字符串中的每个空格替换成“%20”。加入输入“we are happy.”,则输出“we%20are%20happy.”。时间复杂度为O(n^2)基本思想:从前往后把字符串中的空格替换成%20.假设字符串的长度为n,对每个空格字符,需要移动后面O(n)个字符,因此总的时间复杂度为O(n^2)。时间复杂度为O(n)基本思想:先遍历
2015-04-23 13:17:47 1603
原创 剑指offer 面试题3—二维数组中找数
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。基本思想:首先选取数组中右上角的数字。如果=要找的数字,结束。如果大于要找的数字,剔除这个数字所在的列;如果小于要找的数字,剔除这个数字所在的行。#include using namespace
2015-04-23 11:22:32 1271
原创 剑指offer 面试题2—实现单例模式
题目:设计一个类,我们只能生成该类的一个实例。解法一:懒汉式单例1.适用于单线程环境 //懒汉式单例类.在第一次调用的时候实例化自己 public class Singleton { //私有的默认构造子 private Singleton() {} //注意,这里没有final
2015-04-23 10:23:21 1288 1
原创 Android中ListView原理与优化 浅析
Android中ListView的优化不管在开发中还是在面试中经常会遇到。这不,LZ在阿里2015实习生招聘面试中就被问到,被虐的灰头土脸,回来赶紧总结一下。 提到ListView的优化,首先想到的是利用convertView和ViewHolder来优化ListView数据加载,仅仅就这些吗?其实不是的,首先,想要优化ListView就得先了解ListView加载数据原理。
2015-04-22 15:49:21 1136
原创 Android的crash的类型及原因
Android平台程序崩溃大家都应该遇到过,force close和ANR应该是大家遇到较多的。这里把Android平台程序崩溃的各种类型做一个简述和原因列举。1.ANR(可见ANR):发生场景:应用发生ANR。崩溃症状:系统弹出窗口询问用户选择“Force Close”或者“Wait”。 “Force Close”将杀掉发生ANR的应用进程。“
2015-04-20 09:46:03 3247
原创 最长回文子串[中心扩展思想]
#include #include using namespace std; string findLongestPalindrome(string &s) { int length=s.size(); int maxlength=0; int start,j,k; for(i
2015-04-19 20:47:35 1663
原创 单链表[建表、输出、插入、删除、逆序]
面试的时候老是被问到单链表知识,索性总结一下。这篇文章主要总结了单链表的创建、输出、逆序、插入和删除。#include using namespace std;typedef int ElemType;//数据类型模板typedef struct Node//结点{ ElemType data; struct Node *next;}Node;typedef
2015-04-17 18:00:49 1293
转载 数据库基础(常见面试题)
数据库基础(面试常见题)一、数据库基础1. 数据抽象:物理抽象、概念抽象、视图级抽象,内模式、模式、外模式2. SQL语言包括数据定义、数据操纵(Data Manipulation),数据控制(Data Control)数据定义:Create Table,Alter Table,Drop Table, Craete/DropIndex等数据操纵:Select ,insert,u
2015-04-13 14:42:06 6237
转载 面试 linux常用命令
完整链接:http://linux.chinaitlab.com/special/linuxcom/Index.html显示目录和文件的命令 Ls:用于查看所有文件夹的命令。 Dir:用于显示指定文件夹和目录的命令 Tree: 以树状图列出目录内容 Du:显示目录或文件大小 修改目录,文件权限和属主及数组命令
2015-04-12 16:10:37 2530
转载 堆和栈的区别(详细)
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两
2015-04-09 17:06:33 547
转载 23种设计模式全解析
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式
2015-04-07 10:09:13 1009
转载 八大排序算法
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键
2015-04-02 10:20:58 868
原创 Redis 3.0.0 正式版出炉,高性能 K/V 服务
Redis 3.0.0 正式版终于到来了,与 RC6 版本比较,该版本改进包括:* 修复了无磁盘的复制问题 (Oran Agra)* 在角色变化后对 BLPOP 复制进行测试 (Salvatore Sanfilippo)* prepareClientToWrite() 错误处理方法的改进 (Salvatore Sanfilippo)* 移除 dict.c 中不再使用的函数(Salv
2015-04-02 09:30:09 1097 1
转载 Android View原理(View树遍历,View重绘,View动画)
一、屏幕绘图基础Android中的GUI系统是客户端和服务端配合的窗口系统,即后台运行了一个绘制服务,每个应用程序都是该服务端的一个客户端,当客户端需要绘制时,首先请求服务端创建一个窗口,然后在窗口中进行具体的视图内容绘制;对于每个客户端而言,他们都感觉自己独占了屏幕,而对于服务端而言,它会给每一个客户端窗口分配不同的层值,并根据用户的交互情况动态改变窗口的层值,这就给用户造成了所谓的前台
2015-04-01 10:36:00 6213 1
Android中ksoap2-android调用WebService 实现天气预报
2014-11-17
Android内核剖析
2014-11-10
深入理解JAVA虚拟机第二版.pdf(周志明)
2014-11-10
机器学习实战
2014-10-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人