`
文章列表
public class MinOfShiftedArray { /** * Q69 旋转数组的最小元素 * 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。 * 例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。 */ public static void main(String[] args) { int[][] a={ {1,2,3,4,5}, {2,3,4,5,1}, {3,4,5,1 ...
public class ProbabilityOfDice { /** * Q67 n个骰子的点数 * 把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。 * 在以下求解过程中,我们把骰子看作是有序的。 * 例如当n=2时,我们认为(1,2)和(2,1)是两种不同的情况 */ private static int MAX=6; public static void main(String[] args) { int n=2; printProbabilityOfDice(n);//so ...
public class Power { /** *Q71-数值的整数次方 *实现函数double Power(double base, int exponent),求base的exponent次方。不需要考虑溢出。 */ private static boolean InvalidInput=false; public static void main(String[] args) { double result=power(3,15); System.out.println(result); } public static d ...
public class LongestSymmtricalLength { /* * Q75题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。 * 比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。 */ public static void main(String[] args) { String[] strs={ "google", "elgoog", "agollloge", " ...
import java.util.LinkedList; import java.util.List; import ljn.help.*; public class BTreeLowestParentOfTwoNodes { public static void main(String[] args) { /* * node data is stored in leverOrder.'0' represents null node. * e.g. * int[] data={1,8,7,9,2,0,0,0,0,4,7}; * the ...
参考了http://zhedahht.blog.163.com/blog/static/25411174201142733927831/ 但是用java来实现有一个问题。 由于Java无法像C那样“传递参数的地址,函数返回时能得到参数的值”,唯有新建一个辅助类:AuxClass import ljn.help.*; public class BalancedBTree { /** * Q判断二叉树是不是平衡 1 / \ 2 3 / \ \ 4 5 6 / 7 */ pub ...
public class OcuppyMoreThanHalf { /** * Q74 数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字 * two solutions: * 1.O(n) * see <beauty of coding>--每次删除两个不同的数字,不改变数组的特性 * 2.O(nlogn) * 排序。中间那个元素就是所求 */ public static void main(String[] args) { int[] a={4,3,4,2,4,5,4,4}; int re ...
public class FirstShowOnlyOnceElement { /**Q17.在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b * 1.int[] count:count[i]表示i对应字符出现的次数 * 2.将26个英文字母映射:a-z <--> 0-25 * 3.假设全部字母都是小写 */ public static void main(String[] args) { String str="abaccdeff"; int index=find(str); ...
思路来自:http://zhedahht.blog.163.com/blog/static/25411174201011445550396/ import ljn.help.*; public class HasSubtree { /**Q50. * 输入两棵二叉树A和B,判断树B是不是A的子结构。 例如,下图中的两棵树A和B,由于A中有一部分子树的结构和B是一样的,因此B就是A的子结构。 1 8 ...
public class PrintMatrixClockwisely { /** * Q51.输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 例如:如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1, ...
思路来自:http://zhedahht.blog.163.com/blog/static/2541117420116135376632/ 写了个java版的 public class GreatestLeftRightDiff { /** * Q61.在数组中,数字减去它右边(注意是右边)的数字得到一个数对之差。 * 求所有数对之差的最大值。例如在 ...
public class KthFibonaciPrime { /** * 求Fibonacci数列中第k个与前面所有数互质的数(除前面两个数 1,1 ) * 假设k=1时,2为所求 */ public static void main(String[] args) { KthFibonaciPrime k=new KthFibonaciPrime(); System.out.println(k.getKthRelativelyPrime(5)); } /* * 设fi为Fibonacci数列的第i项 * 下面这个方法的问题在 ...
/* * 假设正整数 n 能表示为 i 个连续正整数之和且其第一个数为 x,则 n = x * i + (i - 1) * i/2,其中 n, x, i 都为正整数, * 所以如果 x = (n - (i-1)*i/2) / i 为正整数(即分子对i取模等于0),则 n 就能表示为i个连续正整数之和。 * i 的取值范围为[2,y](y=1+sqrt(1+8n)/2,可通过一元二次不等式求得) * 或者简单地认为i的取值范围为[2,n/2+1] */ public static void bestPrintContinuousNum(int target){ ...
public static void bubbleSort(int[] c){ for(int i=0,len=c.length;i<len;i++){ for(int j=0;j<len-i-1;j++){ if(c[j]>c[j+1]){ Helper.swap(c, j+1, j); } } } } public static void selectionSort(int[] c){ for(int i=0,len=c.length;i<len;i++){ int k=i; ...
public class MaxCatenate { /* * Q.37 有n 个长为m+1 的字符串,如果某个字符串的最后m 个字符与某个字符串的前m 个字符匹配,则两个字符串可以联接, * 问这n 个字符串最多可以连成一个多长的字符串,如果出现循环,则返回错误。 */ public static void main(String[] args){ String[] text = new String[]{ "abcd", ...
Global site tag (gtag.js) - Google Analytics