当前位置: 首页 > 面试题库 >

手写代码:筛选数组arr中重复的元素,考虑时间复杂度。

潘涵煦
2023-03-14
本文向大家介绍手写代码:筛选数组arr中重复的元素,考虑时间复杂度。相关面试题,主要包含被问及手写代码:筛选数组arr中重复的元素,考虑时间复杂度。时的应答技巧和注意事项,需要的朋友参考一下

参考回答:

function duplicates(arr) {

//声明两个数组,a数组用来存放结果,b数组用来存放arr中每个元素的个数

var a = [],b = [];

//遍历arr,如果以arr中元素为下标的的b元素已存在,则该b元素加1,否则设置为1

for(var i = 0; i < arr.length; i++){
if(!b[arr[i]]){
b[arr[i]] = 1;
continue;
}
b[arr[i]]++;
}

//遍历b数组,将其中元素值大于1的元素下标存入a数组中

for(var i = 0; i < b.length; i++){
if(b[i] > 1){
a.push(i);
}
}
return a;
}

时间复杂度为O(n)

 类似资料:
  • 本文向大家介绍手写代码:一个数组找出重复的元素相关面试题,主要包含被问及手写代码:一个数组找出重复的元素时的应答技巧和注意事项,需要的朋友参考一下 参考回答: function duplicates(arr) { //声明两个数组,a数组用来存放结果,b数组用来存放arr中每个元素的个数 var a = [],b = []; //遍历arr,如果以arr中元素为下标的的b元素已存在,则该b元素加1

  • 本文向大家介绍手写代码:最大子数组问题(要求时间复杂度最佳)相关面试题,主要包含被问及手写代码:最大子数组问题(要求时间复杂度最佳)时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 线性时间算法:该算法在每次元素累加和小于0时,从下一个元素重新开始累加。实现代码如下: /* 时间复杂度O(n) 和最大的子序列的第一个元素肯定是正数 因为元素有正有负,因此子序列的最大和一定大于0 //如果累加

  • 有人能帮我了解一下这个代码片段的时间和空间复杂性吗?请参考leetcode问题-单词中断II。给定一个非空字符串s和一个包含非空单词列表的字典单词dict,在s中添加空格来构造一个句子,其中每个单词都是有效的字典单词。返回所有这些可能的句子。

  • 我有一个包含值和附加信息的数据框架。我希望能够提取只属于一种信息的值。我不知道会预先查询哪些值和多少值。所以,有可能只调用一次带有附加信息“foo”的值,有时使用附加信息“bar”和“baz”,所以使用简化的数据帧 我试过了 但是我得到了一个ValueError:级数的真值是模糊的。使用a.empty、a.bool()、a.item()、a.any()或a.all()。但是我无法使用any()-函

  • 下面给出了问题陈述和解决方案。我无法理解解决方案背后的逻辑。 问题陈述: 给定一个数组包含n+1个整数,其中每个整数介于1和n之间,证明至少存在一个重复的数字。假设只有一个重复的数字,找到重复的一个。 首先,搜索空间是1到n之间的数字。每次我选择一个数字mid(它是中间的那个),并计算所有等于或小于mid的数字。如果计数大于mid,则搜索空间为[1 mid],否则为[mid+1n]。我这样做,直到

  • 如何在Java中复制数组的元素,并按原始数组的相同顺序将它们添加到新数组中 请解释为什么上面的代码不起作用。 我的输出是 : // [4, 4, 代替: