源程序
文章平均质量分 78
安心写代码吧
不断学习的好学生
展开
-
Thinking in Java之类内部变量定义先后顺序
Java中,类内部变量初始化先后顺序问题。在类内部,变量定义的先后顺序决定了初始化的顺序。/************************************************************** * 版 本 号:v1.0 * 程序来源:《Thinking in Java》 page:185(中文94原创 2016-07-19 10:15:04 · 525 阅读 · 0 评论 -
剑指Offer面试题52:构建乘积数组 Java实现
题目:构建乘积数组 给定一个数组A[0,1,2,……n-1],请构建一个数组B[0,1,……n-1],其中B中的元素B[i]=A[0]*A[1]*……A[i-1]*A[i+1]*……A[n-1].不能使用除法.算法分析:如果没有不能使用除法限制,可以用公式πA[j]/A[i]求得B[i].现在要求不能使用护发,只能使用其他方法。更高效的算法原创 2016-10-11 21:26:17 · 407 阅读 · 0 评论 -
剑指Offer面试题34:丑数 Java实现
题目:丑数 我们把包含因子2,3,和5的数称作丑数(Ugly Number)。求按从小到大的顺序的第1500个丑数。例如6,8都是丑数,但14不是,因为它包含因子7.习惯上,我们把1当做第一个丑数。算法分析:1.所谓一个数m是另一个数n的因子,是指n能被m整除。也就是n%m==0. 根据丑数的定义,丑数只能被2,3,5整除。也就是说如果转载 2016-09-21 23:35:25 · 854 阅读 · 0 评论 -
剑指offer面试题28:字符串的排列 Java实现
题目: 输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab,cba.算法分析:我们求整个字符串的排列,可以看成两步:1.求得所有可能出现在第一个位置的字符,即把第一个字符和后面的所有字符交换。2.固定第一个字符,求后面所有字符的排列。这个时候我们仍把所有原创 2016-09-14 19:42:43 · 1443 阅读 · 0 评论 -
剑指offer面试题24:二叉搜索树的后续遍历序列 Java实现
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后续遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同例如:输入数组{5,7,6,9,11,10,8},则经判断是二叉搜索树,返回true;如果输入数组{7,4,6,5},则经判断不是二叉搜索树,返回false。 8原创 2016-09-11 15:40:07 · 1018 阅读 · 0 评论 -
剑指Offer面试题29:数组中出现次数超过一半的数字 Java实现
题目:数组中出现次数超过一半的数字。 数组中有一个数字出现次数超过数组长度的一半,请找出这个数字,例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2},由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。算法分析:算法1.基于中位函数getMiddle()的O(n)算法如果把输入的数组排序,那么排序后位于数组中间的数字一定就是转载 2016-09-17 19:42:48 · 454 阅读 · 0 评论 -
剑指Offer面试题33:把数组排成最小的数 Java 实现,三种方法
题目:把数组排成最小的数 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这3个数字能排成的最小数字321323.算法分析:1.最直接的办法就是先求出这个数组中所有数字的全排列,然后把每个排列拼接起来,最后求出拼接起来的数字的最小值。求数组的排列和字符串排列非常相近原创 2016-09-20 22:24:19 · 2524 阅读 · 0 评论 -
剑指Offer面试题30:最小的k个数 Java不同算法实现
题目:输入N个整数,找出其中最小的k个整数。例如输入 4,5,1,6,2,7,3,8,输入k=4,则输出最小的四个数是1,2,3,4算法分析:算法1.O(n)的算法,修改输入的数组可以基于getMiddle函数来解决此问题。如果基于数组的第k个数字来调整,使得第k个数字小的所有数字都位于数组的左边,比第k个数字大的所有数字都位于数组的右边。这样调整后,位于数组左边的k个原创 2016-09-18 21:13:15 · 594 阅读 · 0 评论 -
剑指Offer面试题20:顺时针打印矩阵 Java实现
题目:输入一个矩阵,按照从外向里的顺序依次打印出每一个数字。例如,输入: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15原创 2016-09-10 16:52:01 · 1351 阅读 · 0 评论 -
Thinking in Java 之 继承与初始化
继承与初始化原创 2016-07-21 14:47:58 · 247 阅读 · 0 评论 -
Thinking in Java之 继承与初始化
Thinking in Java 书中第七章有关继承与初始化的问题在初始化顺序中,首先先初始化根基类中的static,然后是导出类,直到导出类static初始化完成。在本例中,首先初始化Insect基类中的static,即x1,此时打印出“static Insect.x1 initialized”;而后是导出类(子类)static x2初始化,此时打印出static Beetle.x2原创 2016-07-21 14:37:08 · 441 阅读 · 0 评论 -
剑指offer 面试题9:斐波那契数列
题目:求斐波那契Fibonacci数列 求函数f(n) = 0 n = 0 = 1 n = 1 = f原创 2016-08-02 21:28:36 · 409 阅读 · 0 评论 -
Thinking in Java之静态数据初始化顺序
在Java中,初始化的顺序是先静态对象(如果他们尚未因前面的对象创建过程而被初始化),而后是“非静态”对象。在程序中,bowl3是非静态对象,所以在输出的时候是先打印了Bowl(4)和Bowl(5),后打印了Bowl(3).源程序:/**************************************************************原创 2016-07-19 11:17:51 · 332 阅读 · 0 评论 -
剑指Offer面试题54:表示数值的字符串
题目:表示数值的字符串 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串“+100”,“5e2”,"-123","3.1416", "-1e-16"都表示数值,但“12e", "1a3.14" ,"1.2.3", "+-5"都不是。算法分析: 在数值之前可能有一个表示正负的’-‘或者’+’。接下来是若干个0到9的数位表示数值的原创 2016-10-12 22:27:12 · 266 阅读 · 0 评论