1.看错误出在哪
public long solve(int index,int[] array){
if(n<=0){
return 0;
}
int totle=0;
int len=array.length-1;
for(int i=len,j=i-1;i>=0;i--){
if (array[j]>array[i]) {
totle+=array[i];
}
j--;
if (j<0) {
break;
}
}
return totle;
}
2.算法练习过程
(1)算法描述:设计一个算法,计算出n阶乘中尾部零的个数
a)法一:我想到的方法:
第一步:通过一个计算阶乘的函数,先计算出传入数值的阶乘。
第二部:将计算过后返回的整数值变为字符串形式的,通过一个for循环输出为0的值并进行自加
第三部;输出加过的数 即为0的个数。
缺点:
【1】.开销 计算阶乘的开销会越来越大
【2】.溢出 计算后可能会超出原先定义的类型的范围
【3】.效率
b)法二:以5为迭代步数
第一步:考虑末位出现0的值 一般都是10或10的倍数相乘的结果,而10其实是5与偶数相乘。
第二步:最终结果中末尾出现的0是5、10、15、20…….自身或者与偶数相乘之后产生的。所以可以根据5的倍数分析。
(2)算法描述:.比较字符串
比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是 大写字母
样例
给出 A = "ABCD" B = "ACD",返回 true
给出 A = "ABCD" B = "AABC", 返回 false
注意事项
在 A 中出现的 B 字符串里的字符不需要连续或者有序。判断A中是否包含B的所有字符串
【1】先判断两个字符串是否为空
【2】将两个字符串转换为数组
【3】用一个for语句来遍历两个数组 长度以B数组的长度为标准
【4】利用indexOf()函数来取出B中的元素来判断A数组中是否存在,若存在,则将该数组元素置为
(3)算法描述:二分查找算法分析
【1】参数传进来 Nums[] target
【2】如果升序数组nums[]中有target所表示的数 则表示出这个数的下标。
设计思路:
待续...................
3.随手记