9.2 KiB
9.2 KiB
title | localeTitle |
---|---|
Where Do I Belong | 我属于哪里? |
如果卡住,请记得使用**Read-Search-Ask
** 。尝试配对程序并编写自己的代码
问题说明:
这可能是一个难以理解的问题。您需要在数组中找到按顺序插入数字的位置,并返回应该去的索引。
相关链接
提示:1
首先要做的是将数组从低到大排序,只是为了使代码更容易。这是排序的地方,它需要一个回调函数,所以你必须创建它。
现在尝试解决问题
提示:2
对数组进行排序后,只需检查第一个更大的数字并返回索引。
现在尝试解决问题
提示:3
如果该数字没有索引,那么您也必须处理该案例。
现在尝试解决问题
扰流警报!
提前解决!
基本代码解决方案
function getIndexToIns(arr, num) {
arr.sort(function(a, b) {
return a - b;
});
for (var a = 0; a < arr.length; a++) {
if (arr[a] >= num)
return a;
}
return arr.length;
}
代码说明:
- 首先,我使用
.sort(callbackFuntion)
对数组进行排序,从左到右按最低到最高排序。 - 然后我使用for循环来比较从最小的一个开始的数组中的项目。当数组上的项大于我们要比较的数时,我们将索引作为整数返回。
相关链接
基本代码解决方案
function getIndexToIns(arr, num) {
// Find my place in this sorted array.
var times = arr.length; // runs the for loop once for each thing in the array
var count = 0;
for (var i=0;i<times;i++){
if(num>arr[i]){count++;} } // counts how many array numbers are smaller than num
return count; // the above equals num's position in a sorted array
}
getIndexToIns([40, 60], 50);
代码说明:
- 我没有对arr输入数组进行排序
- 每当num输入大于arr输入数时,我都会运行for循环计数。
- 这个数字相当于num在排序数组中的位置。
基本代码解决方案
function getIndexToIns(arr, num) {
arr.sort(function(a, b) {
return a - b;
});
var i = 0;
while (num > arr[i]) {
i++;
}
return i;
}
getIndexToIns([40, 60], 50);
代码说明:
- 排序现有数组。
- 在检查_num_是否更大时迭代数组。
- 当_num_不大于_i_并且返回最后检查的元素时,循环将停止。
中级代码解决方案:
function getIndexToIns(arr, num) {
arr.push(num);
arr.sort(function(a, b){return ab});
return arr.indexOf(num);
}
代码说明:
- 首先,我们使用
push()
将数字num
添加到数组中,push()
其添加为数组的最后一个元素。 - 然后我们使用
sort()
和回调函数function(a, b){return ab}
来按升序对数字进行排序。 - 最后,我们使用
indexOf()
函数indexOf()
数组中num
的位置或索引。
相关链接
中级代码解决方案:
使用.findIndex()
function getIndexToIns(arr, num) {
// sort and find right index
var index = arr.sort((curr, next) => curr > next)
.findIndex((currNum)=> num <= currNum);
// Returns proper answer
return index === -1 ? arr.length : index;
}
getIndexToIns([40, 60], 500);
代码说明:
- 首先按升序对数组进行排序,目前使用数组函数完成此操作以实现最小占用空间。
- 一旦数组被排序,我们直接应用
.findIndex()
,我们将比较数组中的每个元素,直到我们找到num <= currNum
这意味着我们要插入的数字小于或等于当前数字迭代中的数字。 - 然后我们使用三元运算来检查我们是否返回了索引或
-1
。我们只有在找不到索引时才得到-1
,这意味着当我们为数组中的所有元素得到一个false时,对于这种情况,这意味着num
应该插入到列表的末尾,这样我们为什么要使用arr.length
。
相关链接
高级代码解决方案
通过@nivrith
function getIndexToIns(arr, num) {
return arr.concat(num).sort((a,b) => ab).indexOf(num);
}
getIndexToIns([1,3,4],2);
代码说明:
- 我们使用方法链来一个接一个地调用一个方法来解决单行中的问题。首先,我们通过调用arr.concat(num)方法合并
arr
和num
- 然后我们使用带有回调箭头函数的
sort()
(a, b) => return ab
来按升序对数字进行排序 - 最后,我们使用
indexOf()
方法indexOf()
数组中num
的位置或索引
相关链接
捐款说明:
- 请勿添加与任何现有解决方案类似的解决方案。如果您认为它**相似但更好** ,那么尝试合并(或替换)现有的类似解决方案。
- 添加解决方案的说明。
- 将解决方案分为以下类别之一 - 基本 , 中级和高级 。
- 如果您添加了任何**相关的主要内容,**请仅添加您的用户名。 ( 不要 删除任何现有的用户名 )