把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。/**使用筛子的思想,先找出一定数量的丑数,放到ArrayList,再按要求取出对应的丑数@index 代表第N个丑数*/public class UglyNumber { public static int GetUglyNumber_Solution(int index) { int i=2; //store uglyNumbers ArrayList<Integer> list=new ArrayList<>(); //inital list,"1" is the fisrt ugly number list.add(1); while (list.size()!=index){ if (judegeNumber(i)){ list.add(i); } i++; } return list.get(list.size()-1); } public static boolean judegeNumber(int n){ //judege weather is uglyNumber while(n !=1){ if (n%2==0){ n=n/2; } else if(n%3==0){ n=n/3; } else if(n%5==0){ n=n/5; } else{ break; } } if (n==1){ return true; } else { return false; } } public static void main(String[] args){ System.out.print(""+GetUglyNumber_Solution(7)); }}
输入一个整型数组,数组中一个或连续的多个整数组成一个子数组。求所有子数组和的最大值。例如{1,-2,3,10,-4,7,2,-5}最大的子数组{3,10,-4,7,2}/**curSum=0,GreatSum=0,数组元素都为负值,返回值0是错误的;curSum=arr[0],GreatSum=[0],数组元素都为正值,array[0]被计算2次;*/public int FindGreatestSumOfSubArray(int[] array) { int curSum=0;//当前子数组的和 int GreatSum=array[0];//保存返回的最大值 for(int i=0;i<array.length;i++){//curSum<0 ,抛弃之前curSum的值; if(curSum<0){ curSum=array[i]; } else{ curSum+=array[i]; } if(curSum>GreatSum){ GreatSum=curSum; } } return GreatSum; }
二维数组的查找在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。/**从右上角开始查找,偏小向左查找,偏大向下查找;*/public class Solution { public boolean Find(int target, int [][] array) { int column=array[0].length; int row=array.length; int i=0; int j=column-1; if(column>0 && row >0) { while (true) { if (target == array[i][j]) { return true; } else if (target < array[i][j]) { j--; if (j < 0) { return false; } } else { i++; if (i >= row) { return false; } } } } else { //数组为空的情况 return false; } }}
网友评论