相关疑难解决方法(0)

将数字插入已排序的数字数组的有效方法?

我有一个已排序的JavaScript数组,并希望在数组中再插入一个项目,以便生成的数组保持排序状态.我当然可以实现一个简单的快速插入式插入功能:

var array = [1,2,3,4,5,6,7,8,9];
var element = 3.5;
function insert(element, array) {
  array.splice(locationOf(element, array) + 1, 0, element);
  return array;
}

function locationOf(element, array, start, end) {
  start = start || 0;
  end = end || array.length;
  var pivot = parseInt(start + (end - start) / 2, 10);
  if (end-start <= 1 || array[pivot] === element) return pivot;
  if (array[pivot] < element) {
    return locationOf(element, array, pivot, end);
  } else {
    return locationOf(element, array, start, pivot);
  }
}

console.log(insert(element, …
Run Code Online (Sandbox Code Playgroud)

javascript sorting algorithm

124
推荐指数
9
解决办法
8万
查看次数

如何迭代数组并删除JavaScript中的元素

我有一系列元素,需要从中删除某些元素.问题是JavaScript似乎没有为每个循环而且如果我使用for循环我遇到问题它基本上试图检查超出数组边界的元素,或者因为索引改变而缺少数组中的元素.让我告诉你我的意思:

var elements = [1, 5, 5, 3, 5, 2, 4];
for(var i = 0; i < elements.length; i++){
    if(elements[i] == 5){
        elements.splice(i, 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是当元素[1]被移除时,元素[2]变成元素[1].所以第一个问题是从未检查过某些元素.另一个问题是.length更改,如果我硬编码边界,​​那么我可能会尝试检查超出数组边界的元素.那么做这件非常简单的事情的最佳方法是什么?

javascript iteration bounds

68
推荐指数
3
解决办法
6万
查看次数

如何实现javascript数组?

即,以下代码如何:

var sup = new Array(5);
sup[0] = 'z3ero';
sup[1] = 'o3ne';
sup[4] = 'f3our';
document.write(sup.length + "<br />");
Run Code Online (Sandbox Code Playgroud)

输出'5'作为长度,当你所做的就是设置各种元素?

我对此代码的"问题"是,我不理解如何在length不调用getLength()setLength()方法的情况下进行更改.当我执行以下任何操作时:

a.length
a['length']
a.length = 4
a['length'] = 5
Run Code Online (Sandbox Code Playgroud)

在非数组对象上,它的行为类似于dict/associative数组.当我在数组对象上执行此操作时,它具有特殊含义.JavaScript中的哪种机制允许这种情况发生?javascript是否有某种类型的属性系统进行翻译

a.length
a['length']
Run Code Online (Sandbox Code Playgroud)

进入"获取"方法和

a.length = 4
a['length'] = 5
Run Code Online (Sandbox Code Playgroud)

进入"设置"方法?

javascript arrays associative-array

29
推荐指数
2
解决办法
1万
查看次数

如何从数组中删除所有奇数索引(例如:a [1],a [3] ..)值

我有一个数组,就像var aa = ["a","b","c","d","e","f","g","h","i","j","k","l"];我想删除偶数索引上的元素.所以输出就行了aa = ["a","c","e","g","i","k"];

我试过这种方式

for (var i = 0; aa.length; i = i++) {
if(i%2 == 0){
    aa.splice(i,0);
}
};
Run Code Online (Sandbox Code Playgroud)

但它没有用.

javascript arrays data-structures

7
推荐指数
2
解决办法
5403
查看次数

Javascript拼接方法中的怪异错误

我有一个包含“零”的数组,我想将所有“零”移到该数组的最后一个索引。

预期的输出是:

[1,2,3,0,0,0,0]
Run Code Online (Sandbox Code Playgroud)

但是我得到了:

[1,2,0,3,0,0,0]
Run Code Online (Sandbox Code Playgroud)

javascript sorting algorithm array-algorithms

6
推荐指数
2
解决办法
141
查看次数

O(n)时间中的(1,2,3)个数字的排序数组

给定一个只有3个唯一数字(1、2、3)的数字列表,请以O(n)时间对列表进行排序。另外,使用常量空间O(1)对数组进行排序。

例:

Input: [3, 3, 2, 1, 3, 2, 1]

Output: [1, 1, 2, 2, 3, 3, 3]

在这里,我提出的解决方案(没有O(1)空间,并且在数组中没有空的空间..):此函数的作用很简单..在所有元素均为2的情况下,将排列的大小增加了一倍; 然后它返回其先前的长度(current / 2)对其元素进行排序..如果为1,则不执行任何操作,如果找到2,则将其放入先前的最大长度+ 1,它增加变量len并消除元素,如果它是3,则推并删除该元素..则您在数组中有空位,并且不满足问题的要求,但它是O(n)。

function sort(list) {
    let len = list.length;
    list.length=len*2
    for(let i=0; i<list.length/2; i++){
        let n=list[i]
        if(n==2){
            list[len]=n
            delete list[i]
            len++
        }else if(n==3){
            list.push(n)
            delete list[i]
        }
    }
    return list
}

console.log(sort([1,2,3,2,1,1]))
Run Code Online (Sandbox Code Playgroud)

javascript sorting algorithm big-o

1
推荐指数
1
解决办法
183
查看次数