需求
给出定两个参数,参数1:arr,参数2:num;查找参数num插入数组时的最小索引
getIndexToIns([10, 20, 30, 40, 50], 35) should return 3.
getIndexToIns([10, 20, 30, 40, 50], 30) should return 2.
getIndexToIns([2, 5, 10], 15) should return 3.
思路1
- 数组重排序
- 判断数组中是否包含>=num的最小数,
有,则返回其最小数的索引;无,则返回其数组长度
function getIndexToIns(arr,num) {
var newArr = arr.sort((a,b) => a-b);
for(var i=0; i<newArr.length; i++) {
if(newArr[i] >= num) {
return i;
}
}
return newArr.length;
}
getIndexToIns([5, 3, 20, 3], 5);
思路2
1.用变量存储num大于arr中各元素的次数
2.返回变量
function getIndexToIns(arr,num) {
var counts = 0;
for(var i=0; i<arr.length; i++) {
if(num > arr[i]) {
counts++;
}
}
return counts;
}
getIndexToIns([5, 3, 20, 3], 5);
function getIndexToIns(arr,num) {
arr.sort((a,b) => a-b);
var i = 0;
while(num > arr[i]) {
i++
}
return i;
}
getIndexToIns([5, 3, 20, 3], 5);
思路3
1.数组重排序
2.查找大于num的数组最小值的索引
3.索引等于-1返回数组长度,否则返回索引
function getIndexToIns(arr,num) {
var index = arr.sort((a,b) => a-b)
.findIndex(a => a >= num);
return index === -1 ? arr.length:index;
}
getIndexToIns([5, 3, 20, 3], 5);
思路4
- 直接把num插入arr中
- sort()重排序
- 返回num索引
function getIndexToIns(arr,num) {
arr.push(num);
arr.sort((a,b) => a-b);
return arr.indexOf(num);
}
getIndexToIns([5, 3, 20, 3], 5);
function getIndexToIns(arr,num) {
return arr.concat(num).sort((a,b) => a-b).indexOf(num);
}
getIndexToIns([5, 3, 20, 3], 5);
有其他好的方法或思路的道友,不妨在沙发区神交一番。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。