面试问答解码 - # 1
大家好!欢迎来到本系列的第一期!我将尝试解释一个常见的软件工程面试题,以便大家更好地理解它,并希望到时候能够记住它!
这些问题将主要用 JavaScript 来解决,因为这是我测试时选择的语言(我只是想成为一名优秀的前端开发人员。🥺)
问:找出给定数组中的第二大数字。
参数:给定一个包含正整数(不含负数和浮点数)的数组。我们需要编写一个函数,返回第二大的整数。
开始吧!
我们将编写函数的骨架,将输入/参数设置为数组的“arr”:
function secondLargest(arr){};
然后,我们需要设置两个空变量:largest和second。
为什么?因为我们循环遍历数组时,需要为预期的最大数字和第二
大数字设置占位符。 我们需要跟踪数组中的每个整数,并比较它们的值与其他整数的比较。
function secondLargest(arr){
let largest = '';
let second = '';
}
……这就引出了下一步:创建一个 for 循环!
在遍历数组时,我们会将每个值相互比较,将变量“最大值”与当前迭代值 (arr[i]) 进行比较。
function secondLargest(arr){
let largest = '';
let second = '';
//
for(let i=0; i < arr.length; i++){};
//
};
为了进行比较,我们将创建一个if 语句,将最大值与arr[i]进行比较。
如果arr[i]大于biggest,则通过重新声明biggest并将其设置为等于arr[i ] ,将其替换为arr[i]的当前值
function secondLargest(arr){
let largest = '';
let second = '';
for(let i=0; i < arr.length; i++){
//
if(arr[i] > largest){
largest = arr[i]
};
//
};
};
我们找到了最大的数!但是如何得到第二大数呢?
我们已经找到了(某种程度上):我们只需将之前的“最大”数设置为“second”变量即可。
但是,我们必须在声明新的最大数字之前声明第二个变量,因为顺序很重要——JavaScript 从上到下执行代码。
function secondLargest(arr){
let largest = '';
let second = '';
for(let i=0; i < arr.length; i++){
if(arr[i] > largest){
//
second = largest;
//
largest = arr[i];
};
};
};
说到顺序和特殊性,现在是时候我们在数组中找到“真正的”第二大数字了。
让我们创建另一个具有更具体参数的 if 语句:
如果arr[i]大于second 且小于biggest,则将arr[i]设置为second
function secondLargest(arr){
let largest = '';
let second = '';
for(let i=0; i < arr.length; i++){
if(arr[i] > largest){
second = largest;
largest = arr[i];
};
//
if(arr[i] > second && arr[i]< largest){
second = arr[i];
};
//
};
};
最后,我们将返回第二个变量来完成要求。
function secondLargest(arr){
let largest = '';
let second = '';
for(let i=0; i < arr.length; i++){
if(arr[i] > largest){
second = largest;
largest = arr[i];
};
if(arr[i] > second && arr[i]< largest){
second = arr[i];
};
};
//
return second;
//
};
就这样!这是一个相当简单的解决方案,虽然有点长,因为我们用的是传统的 for 循环,但它确实有效!
请随意在评论中使用您选择的编程语言发布您自己的解决方案!
感谢阅读!
如果您想保持联系,请通过Twitter与我联系!
文章来源:https://dev.to/cat/interview-qs-decoded-issue-1-40i3