1.删除排序数组中的重复项
描述
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
例如: 给定数组 nums = [1,1,2]
返回 2
测试样例
输入:[1,1,2] 期望输出:2
第一种思路:
直接利用js特定函数进行删除,不过要注意如果两数相等时候,i的值不用变化,如果不相等,i的值才向前一位
代码如下:
/**
- @param arr Array
- @return Number
*/
var Solution = function(arr){
for(var i=1;i<=arr.length;){ if(arr[i]===arr[i-1]){ arr.splice(i,1) }else{ i++ } } return arr.length
};
第二种思路:
比较简单,但是有点难想,第一个元素如果和后面那一个一样只记一个即count++,最后用总长度减去count
例如:[1,1,2,2,3,3],经过运算后count的值等于3,总长度等于6,6-3=3就是我们所要的结果
代码如下:
/**
- @param arr Array
- @return Number
*/
var Solution = function(arr){
var count=0 var a=arr.length for(var j=0;j<a-1;j++) { if(arr[j]===arr[j+1]) { count++ } } return a-count
};
2.贷款计算
分析:这道题本身不难,但是考察阅读能力,值得一做
题目描述
针对等额本金还款模式的客户,写一个程序按顺序输入贷款总额(单位为万元)、月利率、贷款总月数,输出第一个月客户还款金额(单位为元,取整数)。
等额本金计算公式如下:
每月还款金额= (贷款本金/ 还款总月数)+(本金 - 已归还本金累计额)×每月利率
输入
依次输入贷款总额(整数,单位:万元)、月利率(浮点数)、贷款总月数(整数)
输出
月还款金额(取整数,单位:元)
样例输入
500 0.004 360
样例输出
33888
代码如下:
include <stdio.h>
int main(void)
{
int a,b; double l; scanf("%d%lf%d",&a,&l,&b); printf("%d",(int)(((1.0*a/b)+a*l)*10000)); return 0;
}
3.总结一下c语言输出格式吧
(1)换行输出n;
(2)数字8进制输出%o;16进制%x,如果要带前缀的话就多加一个#,如:%#o
(3)浮点数保留小数 %.xf ,这个x就是你要保留的小数位数
(4)占位大小的话就是 %4f ,简单来说就是写在小数点前面。
(5)左右对齐, %-4f 就是左对齐,不写负号就默认右对齐