(1)编写一个程序,由键盘输入n的值,求s=1+(1+4)+(1+4+7)+…+(1+4+7+…+n)的值
(透过现象看本质:与3!+5!+7!+9!类似)
分析:
1+4 : s=s+4
1+4+7 : s=s+7
1+4+7+10 : s=s+10
伪代码如下:
int s=0;//最终结果
int sum =0;//保存每个括号里面的和
for(int i=1;i<=n;i+=3){
sum +=i;
s+= sum ;
}
n=12,11
if((n-1)%3!=0){
s += sum +n;
}
实现代码如下:
2)编写一个int CountNumber(int[] a)方法,该方法的作用是计算a中包含重复数据的个数,例如:a={9,8,12,0,8,11,12,7,8,9},则方法需要返回3.
(说明:重复数据分别是9,8,12)
偽代碼:
HashMap<Integer数组中数字,Integer出现次数>
循环数组:
当前下标的值如果在map中,
对应的value值取出来+1在放回去
当前下标的值不在map中
key值是当前值,value值是1放入map中
循环map
如果value值》1,将计数器+1
返回计数器
實現代碼如下:
結果: