javascript - 我已经在hackerrank中完成了这个代码,排名第二。在 javascript 中,但测试用例显示错误。下面是代码
问题描述
javscript 第二大没有。代码请帮我解决这个程序
function getSecondLargest(nums) {
// Complete the function
nums.sort();
//console.log("sorted array", nums);
let largest_no = nums[nums.length-1];
let final_array = nums.filter(x => x != largest_no);
let second_largest_no = final_array[final_array.length-1]
console.log("filtered array", final_array);
return second_largest_no;
}
getSecondLargest([2, 2, 1, 2, 5, 1, 5, 3, 4, 6, 6 , 6 , 5 , 5]);
解决方案
如果他们通过忽略重复来寻找“5”作为第二大数字。然后下面的代码可用于查找第二个最大值。
可以根据您的要求设置“Default_Min”。该算法将具有 O(n) 时间复杂度。这比使用排序和过滤要好。
function SencondLargest(nums)
{
let max_1;
let max_2;
let Default_Min = 0;
if (nums.length < 2)
{
console.log(" Invalid Input ");
return;
}
max_1 = max_2 = Default_Min;
for(let i=0; i<nums.length; i++)
{
if (nums[i] > max_1)
{
max_2 = max_1;
max_1 = nums[i];
}
else if (nums[i] > max_2 && nums[i] != max_1)
max_2 = nums[i];
}
if (max_2 == Default_Min)
console.log("There is no second largest"+ " element\n");
else
console.log("The second largest element"+ " is "+ max_2);
}
var x = [2, 2, 1, 2, 5, 1, 5, 3, 4, 6, 6 , 6 , 5 , 5];
SencondLargest(x);
推荐阅读
- android - 为什么通知振动不再正常工作?
- javascript - 异步任务的回调是否应该异步运行后续任务?
- python - 我试图制作一个简单的不和谐机器人来加入和离开语音频道,但我不能让机器人离开频道
- php - 正确的正则表达式模式
- twilio-api - 如何创建 500 个 Twilio API 密钥和 API 机密的“批次”而不是一次一个?
- html - 部分获取音频
- mongodb - 登录用户时遇到问题
- vue.js - 在 v-for 循环中更改子字符串的样式
- macos - Helm3 Kubernetes 集群无法访问 - x509:证书由未知机构签名
- c++ - 对参数包进行 dynamic_cast