2017百度前端编程题“求帽子”哪里错了,本地一直编译通过

我的实现思路是:先去掉数组中重复的数字,然后进行排序,最后选出第三个数。

Array.prototype.distinct= function(){
var arr=[];    //定义一个临时数组
for(var i = 0; i < this.length; i++){    //循环遍历当前数组
//判断当前数组下标为i的元素是否已经保存到临时数组
//如果已保存,则跳过,否则将此元素保存到临时数组中
if(arr.indexOf(this[i]) == -1){
arr.push(this[i]);
}
}
return arr;
};

function getPrice(num,arr){
if(num >= 3 && num <=50 && arr.length >=2){
var newArr = arr.distinct().sort();
if(newArr.length >= 3){
return newArr[2];
}else{
return -1;
}
}else{
return -1;
}
}

var n = 10;
var arr = [10,10,10,10,20,20,30,30,40,40];
console.log(getPrice(n,arr));
全部评论
思路就是首先将数组中重复的部分去掉,然后直接排序,之后选择第三个的数作为价格
点赞 回复
分享
发布于 2017-04-27 21:33
你还要考虑比如去掉重复数据后加入个数小于3?
点赞 回复
分享
发布于 2017-04-27 21:41
联易融
校招火热招聘中
官网直投
牛客网上输入输出的问题吧,js输入输出
点赞 回复
分享
发布于 2017-04-27 21:43
怎么感觉用set好写一些
点赞 回复
分享
发布于 2017-04-27 21:48
我的比较暴力哈哈 import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class baidu {       public static void main(String[] args)       {      Scanner scanner=new Scanner(System.in);      while (scanner.hasNext()) { int n=scanner.nextInt(); int[] num=new int[n]; for (int i = 0; i < n; i++) { num[i]=scanner.nextInt(); } System.out.println(sanMax(num)); }       } private static int sanMax(int[] num) { // TODO Auto-generated method stub int temp=-1; Arrays.sort(num); int max=num[0]; int count=1; for (int i = 1; i < num.length; i++) { if (max<num[i]&&count<=2) { count++; max=num[i]; } } if (count==3) { return max; } else { return temp; } } }
点赞 回复
分享
发布于 2017-04-27 21:52
treeset
点赞 回复
分享
发布于 2017-04-27 23:52

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务