数组去重 && 快速排序 && 数组中重复元素最多的 && 深拷贝
var arr1 = [10,9,2,5,7,34,65,48,90,103];
var newArr=[];
/* for(var i=0;i<arr.length;i++){
newArr.indexOf(arr[i])<0 && (newArr.push(arr[i]));
} */
// newArr = Array.from(new Set(arr)); // 快速排序
function quikSort(arr){
if(arr.length<=1)return arr;
var midIndex = Math.floor(arr.length/2);
var midVal = arr.splice(midIndex,1)[0]; var leftArr = [];
var rightArr = [];
for (var val of arr){
if(val<midVal){leftArr.push(val)}else{rightArr.push(val)}
}
/* for(var k=0;k<arr.length;k++){
if( arr[k]<midVal ){
leftArr.push(arr[k])
}else{
rightArr.push(arr[k])
}
} */
return quikSort(leftArr).concat(midVal,quikSort(rightArr));
}
console.log( quikSort(arr1) );
数组中出现重复元素最多的:
function maxCountElement(arr) {
var obj={};
for(var i=0;i<arr.length;i++){
var key=arr[i];
if(obj[key]){
obj[key]++;
}else{
obj[key]=1;
}
}
var maxCount=0;
var maxElement=arr[0];
for(var key in obj){
if(maxCount<obj[key]){
maxCount=obj[key];
maxElement=key;
}
}
return "该数组中出现次数最多的元素:"+maxElement+"出现了"+maxCount+"次";
}
对象深拷贝:
function deepCopy(obj) {
var result = Array.isArray(obj) ? [] : {};
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
if (typeof obj[key] === 'object') {
result[key] = deepCopy(obj[key]); //递归复制
} else {
result[key] = obj[key];
}
}
}
return result;
}
注: 上面的代码有一点小的瑕疵,如果数组中两个不同的元素出现的次数一样多,结果只会体现第一次遇见的次数最多的 元素,和它次数一样多的其他元素会被忽略掉。
改进方案代码如下:
function maxCountElement(arr) {
var obj={};
for(var i=0;i<arr.length;i++){
var key=arr[i];
if(obj[key]){
obj[key]++;
}else{
obj[key]=1;
}
} var maxCount=0;
var maxElement=arr[0];
var eq = [];
for(var key in obj){
if(maxCount < obj[key]){
maxCount=obj[key];
maxElement=key;
eq.length=0;
}else if(maxCount === obj[key]){
eq.push(key);
}
}
if(eq.length > 0){
for(var j=0;j<eq.length;j++){
maxElement+=','+eq[j];
}
}
return "该数组中出现次数最多的元素:"+maxElement+"-----出现了:"+maxCount+"次";
} var arr = [1,2,2,3,3,4,5,6];
var res = maxCountElement(arr); console.log(res);
数组去重 && 快速排序 && 数组中重复元素最多的 && 深拷贝的更多相关文章
- php 去除数组中重复元素
去除数组中重复元素, 找了下可以一下两个函数 php array_flip()与array_uniqure() $arr = array(…………) ;// 假设有数组包含一万个元素,里面有重复的元素 ...
- 给定一个只包含正整数的非空数组,返回该数组中重复次数最多的前N个数字 ,返回的结果按重复次数从多到少降序排列(N不存在取值非法的情况)
""" #给定一个只包含正整数的非空数组,返回该数组中重复次数最多的前N个数字 #返回的结果按重复次数从多到少降序排列(N不存在取值非法的情况) 解题思路: 1.设定一个 ...
- SDUT-2122_数据结构实验之链表七:单链表中重复元素的删除
数据结构实验之链表七:单链表中重复元素的删除 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 按照数据输入的相反顺序(逆 ...
- JS-取出字符串中重复次数最多的字符并输出
/** 取出字符串中重复字数最多的字符 */ var words = 'sdfghjkfastgbyhnvdstyaujskgfdfhlaa'; //创建字符串 var word, //单个字符 le ...
- Java 删除ArrayList中重复元素,保持顺序
// 删除ArrayList中重复元素,保持顺序 public static List<Map<String, Object>> removeDuplicat ...
- SDUT OJ 数据结构实验之链表七:单链表中重复元素的删除
数据结构实验之链表七:单链表中重复元素的删除 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem ...
- 利用Bag中的getCount()方法统计list集合中重复元素
实际应用场景:从Excel导入数据时,存在某个标识符相同的多条数据,需要进行合并,因此需要统计重复元素,可以利用Bag包下的getCount()进行统计,代码如下: package test.com. ...
- python去除列表中重复元素的方法
列表中元素位置的索引用的是L.index 本文实例讲述了Python去除列表中重复元素的方法.分享给大家供大家参考.具体如下: 比较容易记忆的是用内置的set 1 2 3 l1 = ['b','c', ...
- <C#>找出数组中重复次数最多的数值
给定一个int数组,里面存在重复的数值,如何找到重复次数最多的数值呢? 这是在某社区上有人提出的问题,我想到的解决方法是分组. 1.先对数组中的所有元素进行分组,那么,重复的数值肯定会被放到一组中: ...
随机推荐
- C#中利用LINQ to XML与反射把任意类型的泛型集合转换成XML格式字符串
在工作中,如果需要跟XML打交道,难免会遇到需要把一个类型集合转换成XML格式的情况.之前的方法比较笨拙,需要给不同的类型,各自写一个转换的函数.但是后来接触反射后,就知道可以利用反射去读取一个类型的 ...
- JAVA&JS debug
JAVA Chrome Sources 如果当前代码所在文件页面为一界面 → →| -------------------------- ↓↑ ...
- Creating Custom UITableViewCells with NIB files
Maksim Pecherskiy 13 November 2012 Well this sucks. Apparently these days you can only use the Inter ...
- xaml mvvm(1)之结构
在微软winstore.wp和silverlight中xaml是用来构建UI视图的标记语言,全名Extensible Application Markup Language.在结构上类似于html,但 ...
- Win8共享wifi热点设置
Win8共享wifi热点如何设置?大家都知道win7系统可以实现wifi热点共享,那么win8应该也能实现wifi热点共享,那么如何设置win8不需要任何软件只需要对电脑进行设置就可以共享无线上网. ...
- sql字段操作
--删除第一位 substring(ftpMobile,2,len(ftpMobile)-1) --检查是否是数字 ISNUMERIC(ftpMobile) =0 含数字以外字符 ISNUMERIC ...
- Oracle 下载安装教程(doc文件)
之前一直没有怎么接触Oracle数据库,最近公司有个项目中需要用到,所以开始折腾Oracle.刚开始走了很多弯路,为了帮助更多和我一样刚开始接触Oracle的小白,我理了一下的思路 下载地址(需要登录 ...
- Data Base Oracle 常用命令
Data Base Oracle 常用命令 1.登录:(不需要密码,属于管理员权限) conn /as sysdba; 2.查看数据库存储位置: select name from v$datafil ...
- VSM(Virtual Storage Manager) add new osd 代码分析
vsm add new osd 流程 后台获取可用设备 | 选择可用设备及osd相关信息等 | 点击add按钮,把准备部署的osd信息添加到需要部署的item列表中 | 点击submit按钮,添加it ...
- OCP最新题库收集,新版052考题及答案整理-19
19.Which is true about invalid PL/SQL objects? A) They are automatically recompiled against the new ...