
剑指
别志华
这个作者很懒,什么都没留下…
展开
-
剑指-数字在排序数组中出现的次数
题目: 统计一个数字在排序数组中出现的次数. 例如输入排序数组{1,2,3,3,3,3,4,5},由于3在这个数中出现了4次,输出4.原创 2016-08-28 10:43:13 · 2173 阅读 · 0 评论 -
剑指-字符串排列
题目: 输入一个字符串,打印出该字符串中字符的所有排列. 例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,nca,cab,cba.思路: 首先求出所有可能出现在第一个位置的字符,即把第一个字符和后面的字符交换. 第二步固定第一个字符串,求后面所有字符的排列. 这个时候扔把后面的所有字符分成两部分:后面字符的第一个字符,以及这个字符之后的所有字符.原创 2016-08-26 14:59:59 · 777 阅读 · 0 评论 -
剑指-数组中出现次数超过一半的数字
题目: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字. 例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2} 由于数字2在数组横纵出现了5次,超过数组长度的一半,因此输出2.原创 2016-08-26 15:25:41 · 796 阅读 · 0 评论 -
剑指-丑数
题目: 我们把只包含因子2,3,5的数称为丑数(ugly number). 求从小到大的顺序第1500个丑数. 例如6,8都是丑数,但是14不是,因为它包含因子7.习惯上我们把1当做一个丑数.原创 2016-08-26 17:28:55 · 991 阅读 · 0 评论 -
剑指-在字符串中找出第一个只出现一次的字符
题目: 在字符串中找出第一个只出现一次的字符. 如输入abaccdeff,则输出b原创 2016-08-26 18:06:54 · 783 阅读 · 0 评论 -
剑指-二进制相加进位
有两个字符串里面仅包含二进制,然后让两个字符串内的二进制数字从右往左相加进位得到结果.原创 2016-09-08 18:05:04 · 2044 阅读 · 0 评论 -
三种快速排序以及快速排序的优化
三种快速排序以及快速排序的优化转载 2016-08-23 14:16:51 · 1703 阅读 · 0 评论 -
课程格子-斐波那契数列笔试题目-被拒原因?
本人2年Android,最近在看机会,投了课程格子,然后沟通后要先通过一道题目,在再决定安不安排面试.题目是一个上机题目,但是其核心(个人认为)是斐波那契数列的问题.题目如下:要求: - 请实现一个可以显示斐波那列表的activity - 请编写文档介绍你都做了那些很酷的事情 - 项目必须可以在Android SDK 4.0以上的版本与环境下运行 - 提交一个完整的,可运行原创 2016-10-15 14:40:10 · 1639 阅读 · 3 评论 -
五类排序算法(插入,交换,选择,归并)
五种排序方法插入排序 直接插入排序希尔排序交换排序 冒泡排序快速排序选择排序 简单选择排序堆排序归并排序分类排序排序方法基本思想和算法描述直接插入排序/冒泡排序/简单选择排序,这些简单算法所需时间复杂度大为O(n^2).希尔排序/快速排序/堆排序/归并排序,这些较复杂算法的时间复杂度,平均情况下位O(nlog2n),有些最快情况下退化成O(n^2).原创 2016-08-17 00:05:46 · 9506 阅读 · 1 评论 -
剑指 - 二进制中1的个数
题目:请实现一个函数,输入一个整数,输出该数二进制的表示中1的个数。例如把9表示成二进制是1001,有2位1。思路1: 先判断整数二进制表示中最右边以为是不是1,接着把输入的整数右移一位,此时原来的倒数第二位变成的最后一位,再判断是不是1,这样每此移动一位,直到整个整数都变成0为止,其中判断是否是1可以将整数与1做与运算,若结果是1表示该整数的二进制表示最右边一位是1,否则是0。publ原创 2018-01-14 10:53:18 · 312 阅读 · 0 评论 -
剑指-二维数组查找
题目: 在一个二维数组中 每一行都按照从左到右递增的顺序排序 每一列都按照从上到下递增的顺序排序。 请完成一个函数,输入一个整数,判断二维数组数组中是否有该数。思路:(查找的很小在于有效的缩小范围) Key{Key} = 要查找的数字 Valuexy{Value}_{xy} = 从数组中取出的数字 首先会把二维数组化成一个矩形,然后从数组中选取一个数字,分三种情况查找。 1.原创 2016-08-23 17:55:00 · 442 阅读 · 0 评论 -
剑指-从上往下打印二叉树
题目: 从上往下打印二叉树的每个结点,同一层的结点按照从左到右的顺序打印.原创 2016-08-26 13:25:01 · 748 阅读 · 0 评论 -
剑指-包含min函数的栈
题目: 定义栈的数据结构,请在该类型中实现一个能够的得到最小的min函数,在该栈中,调用min,push,pop函数都是O(1)时间复杂度.思路: 可以把每次的最小元素(之前的最小元素和新压入栈的元素两者较小值)都保存起来放到另外一个辅助栈中. 如果每次都把最小元素压入辅助栈,就能保证辅助栈的栈顶元素一直都是最小元素.当最小元素从数据栈内被弹出之后,同时弹出辅助栈的栈顶元素, 此时辅助栈的原创 2016-08-25 15:33:23 · 660 阅读 · 0 评论 -
剑指-二叉树镜像
题目: 请完成一个函数,输入一个二叉树,该函数输出他的的镜像.思路: 先序遍历这棵树的每个结点,如果遍历到结点有子结点,就交换它的两个子结点, 当交换完所有非叶子结点的左右结点之后,就的到了树的镜像原创 2016-08-25 15:11:55 · 712 阅读 · 0 评论 -
剑指-栈的压入和弹出序列
题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是为该栈的弹出顺序. 假设压入栈的所有数字均不相等. 假如序列1,2,3,4,5是某栈的压栈序列,序列4,5,3,2,1是该栈序列对应的一个弹出序列, 但4,3,5,1,2就不可能是该压栈序列的弹出序列原创 2016-08-25 16:24:12 · 494 阅读 · 0 评论 -
剑指-单例模式
四种单例模式对比,推荐最后一种只适用于单线程环境public class Singleton1 { private Singleton1() {} private static Singleton1 instance = null; public static Singleton1 getInstance() { if (instance == null) {原创 2016-08-22 17:44:08 · 544 阅读 · 0 评论 -
剑指-替换空格
题目: 请实现一个函数,把数组中的每个空格替换成%20,例如:输入bie zhi hua,则输出bie%20zhi%20hua算法思路: 先遍历一次字符串,统计出字符数组中空格数量,并计算出替换后的总长度。 然后,从字符数组末尾开始复制和替换。由于所有的字符只移动一次,所以这个算法的时间效率为O(n)public static void main(String[] args) { cha原创 2016-08-23 18:09:00 · 514 阅读 · 0 评论 -
剑指-重建二叉树
输入二叉树的前序遍历和中序遍历的结果,请重建出该二叉树. 假设输入的前序遍历和中序遍历的结果都不含重复的数字. 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}, 则重建出二叉树,并输出头结点.原创 2016-08-24 14:54:55 · 490 阅读 · 0 评论 -
剑指-用两个栈实现队列
题目:用两个栈实现一个队列,请实现在队列尾部插入结点和在队列头部删除结点的功能原创 2016-08-24 15:37:43 · 451 阅读 · 0 评论 -
剑指-旋转数组的最小数
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1.原创 2016-08-24 23:28:31 · 558 阅读 · 0 评论 -
剑指-调整数组顺序使奇数位于偶数前面
题目: 输入一个整数数组,实现一个函数来调整该数组中数组的顺序, 使得所有奇数位于数组的前半部分,所有偶数位于奇数的后面.原创 2016-08-25 10:59:31 · 753 阅读 · 0 评论 -
剑指-链表中倒数第k个结点
题目: 输入一个链表,输出该链表倒数第K个结点. 为了符合大多数人的习惯,本题从1开始计数,即尾结点是倒数第1个结点. 例如一个链表有6个结点,从头结点开始他们的值依次是1,2,3,4,5,6. 这个链表的倒数第3个结点的值为4的结点.原创 2016-08-25 11:23:39 · 698 阅读 · 0 评论 -
剑指-求链表中间结点
题目: 求链表中间结点.如果链表中结点总数为奇数,则返回中间结点.如果链表中结点总数为偶数,则返回中间两个结点任意一个.思路: 为了解决这个问题,可以定义两个指针,同时从链表的头结点出发,一个指针一次走一步,另一个指针一次都两步. 当走的快的走到链表末尾时,走的慢的正好在链表中间.原创 2016-08-25 11:49:12 · 804 阅读 · 0 评论 -
剑指-判断一个单向链表是否形成了环形结构
题目: 判断一个单向链表是否形成了环形结构. 思路: 定义两个指针,同时从链表头部出发,一个指针一次走一步,另一个指针一次走两步.如果走的快的指针追上了走的慢的指针,那么链表就是环形链表. 如果走的快的的走到了链表尾部都没追上第一个指针,那么链表就不是环形链表.private static class Node { int value; Node next;}static boo原创 2016-08-25 14:35:22 · 1910 阅读 · 0 评论 -
剑指-4和7幸运数字 (幸运数字 4和7)
题目: 我们把只包含4或7的数称为幸运数字. 例如:4,7,44,47,74,77等等是幸运数字,而41,42不是幸运数字. 求从小到大的顺序第M个幸运数字.而M的大小是,0 M10^18次幂思路: 由于M数字可以非常大,基本上断绝了使用遍历的方式来求结果的方式。我们可以首先看一下数字的规律,[4,7,44,47,444,447,474,477,744,747,774,77原创 2016-09-07 19:38:23 · 9104 阅读 · 0 评论