首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

(转)JS算法系列-数组去重

1.遍历数组法 最简单的去重方法, 实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中;注意点:判断值是否在数组的方法“indexOf”是ECMAScript5 方法,IE8以下不支持,...需多写一些兼容低版本浏览器代码,源码如下: // 最简单数组去重法 function unique1(array){ var n = []; //一个新的临时数组 //遍历当前数组 for(...n.push(array[i]); } return n; } // 判断浏览器是否支持indexOf ,indexOf 为ecmaScript5新方法 IE8以下(包括IE8, IE8只支持部分ecma5...,遍历传入数组时,判断值是否为js对象的键,不是的话给对象新增该键并放入新数组。...实现思路:给传入数组排序,排序后相同值相邻,然后遍历时新数组只加入不与前一值重复的值。

1.8K90

数组 – 稀疏数组

文章目录 一,稀疏数组 1.定义 2.存储 3.存储方式 1.普通存储 2.链式存储 a.普通链式存储 b.行式链式存储 c.十字链式存储 4.代码实现 3.将稀疏数组存到此磁盘中 4.从磁盘中读取稀疏数组...5.完整代码 一,稀疏数组 1.定义 稀疏数组可以看做是普通数组的压缩,但是这里说的普通数组是值无效数据量远大于有效数据量的数组 形如: 0 0 0 0 0 0 0 0 0...我们可以使用java的IO流将稀疏数组存放到磁盘中,原数组和稀疏数组比较,肯定是稀疏数组体积更小,占用空间更小 /** * 将稀疏数组存入磁盘(文件) * */ public...在这里有个缺陷就是我不能动态的知道稀疏数组一共有几行,所以我选择传参的方式,这样其实是不太友好的 /** * 读文件获取稀疏数组(获取指定行数的稀疏数组)【不足】 * @return...System.out.println("----------->稀疏数组转回原始数组"); //读取磁盘中的稀疏数组 try {

1.1K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【C 语言】数组 ( 数组指针 | 数组指针定义 | 使用 数组指针类型 定义数组指针 )

    // 然后 , 声明一个 数组指针类型 变量 ArrayPointer p = NULL; 一、使用 数组指针类型 定义数组指针 ---- 使用 数组指针类型 定义数组指针 , 首先 , 使用...typedef 定义一个数组指针类型 , typedef int(*ArrayPointer)[3]; 然后 , 定义一个普通数组 , 之后的 数组指针 指向该数组 , int array2...(i = 0; i < 3; i++) { array2[i] = i + 1; } 使用 数组指针 , 打印数组元素内容 : // 使用 数组指针 访问数组中的值..., 数组元素是指针 (作为参考) char *array = {"12", "ab", "34"}; // 数组指针 , 使用指针变量指向数组 // 使用 数组指针类型 定义数组指针...// 首先 , 定义 数组指针类型 别名 typedef int(*ArrayPointer)[3]; // 然后 , 定义一个普通数组 , 之后的 数组指针 指向该数组

    3K10

    PHP 数组:索引数组与关联数组

    在静态语言(C、Java、Go)中,数组的定义通常是同一类型数据的连续序列,PHP 的数组从功能角度来说更加强大,可以包含任何数据类型,支持无限扩容,并且将传统数组和字典类型合二为一,在 PHP 中,传统的数组对应的是索引数组...,字典类型对应的是关联数组,这得益于 PHP 底层通过哈希表实现数组功能。...下面,我们就来简单介绍下 PHP 索引数组和关联数组的基本使用。 1、索引数组 基本使用 所谓索引数组指的是数组的键为隐式数字,并且会自动维护,就像静态语言的数组一样。...增删改查 除了像上述代码那样通过指定初始值进行数组初始化,还可以初始化一个空数组,在 PHP 中,初始化空数组时不必指定数组大小,也不必指定数据类型: $fruits = []; 然后我们可以依次往数组中追加元素...2、关联数组 基本使用 PHP 没有字典(map/dict)这种数据类型,而是将其融入到数组中以关联数组的方式提供支持,与索引数组不同,关联数组通常需要显式指定数组元素的键,还是以「Laravel 精品课

    5.8K20

    【C 语言】数组 ( 数组指针 | 数组指针定义 | 使用 数组类型* 定义数组指针 )

    文章目录 总结 一、使用 数组类型* 定义数组指针 二、完整代码示例 总结 typedef int(ArrayType)[3]; ArrayType *p = NULL; 一、使用 数组类型...* 定义数组指针 ---- 数组类型指针 就是 定义一个指针 , 指向数组首地址 ; 使用 数组类型* 定义数组指针 , 首先 , 定义数组类型 别名 , typedef int(ArrayType...int[3] 数组类型的变量 array2 ; ArrayType *p = NULL; p = &array2; 验证上述 定义的数组指针 : 为 数组元素 赋值 , //...为数组赋值 int i = 0; for(i = 0; i < 3; i++) { array2[i] = i + 1; } 使用 数组指针 , 打印数组元素内容...char *array = {"12", "ab", "34"}; // 数组指针 , 使用指针变量指向数组 // 使用 数组别名 定义数组指针 // 首先 ,

    3.4K20

    【C 语言】数组 ( 数组指针 | 数组指针定义 | 直接定义 数组指针 )

    文章目录 总结 一、直接定义 数组指针 二、完整代码示例 总结 int (*p)[3] = NULL; 一、直接定义 数组指针 ---- 直接定义 数组指针 , 首先 , 定义一个普通数组 ,...之后的 数组指针 指向该数组 , int array2[3] = {0}; 然后 , 直接定义数组类型变量 , int (*p)[3] = NULL; 最后 , 将 array2 变量地址赋值给该...数组指针类型 变量 , 指针指向的数据类型为 int[3] 数组类型的变量 array2 ; ArrayPointer p = NULL; p = &array2; 验证上述 定义的数组指针...; } 使用 数组指针 , 打印数组元素内容 : // 使用 数组指针 访问数组中的值 for(i = 0; i < 3; i++) { printf("..., 数组元素是指针 (作为参考) char *array = {"12", "ab", "34"}; // 数组指针 , 使用指针变量指向数组 // 首先 , 定义一个普通数组

    3.4K20

    【C 语言】数组 ( 数组相关地址 | 数组首元素地址 | 数组地址 )

    文章目录 一、数组相关地址 1、数组首元素地址 2、数组地址 二、代码示例 一、数组相关地址 ---- 数组首元素地址 与 数组地址 值相等 ; int array[10]; 其中 array + 1...的值是 array 地址 加上 4 字节 ; 其中 &array + 1 的值是 array 地址 加上 40 字节 ; 1、数组首元素地址 数组首元素地址 : 数组名 , 就是 数组元素首地址...; 如 : 在函数中定义 如下 局部变量 , 该数组一旦声明 , 就可以知道这是一个 40 字节的内存 , 已经在 栈内存分配完毕 , 数组的地址肯定就不能修改了 ; int array[10];...2、数组地址 数组地址 : 下面的数组张红 ,&array 是数组的地址 ; int array[10]; 二、代码示例 ---- 代码示例 : #include #include...array[10] = {0}; // 打印数组首元素地址 printf("array : %d\n", array); // 打印数组首元素地址 + 1 printf

    9.4K21

    【JavaScript】内置对象 - 数组对象 ① ( 数组简介 | 数组创建 | 数组类型检测 )

    一、数组对象 1、数组简介 在 JavaScript 中 , 提供了一种 内置对象 " 数组 " , 用于存储一系列的值 , 这些值可以是 任意类型的数据 , 包括 数字 / 字符串 / 对象 / 其他数组..., 数组对象 还 提供了 一系列的方法和属性 操作和处理这些值 ; push 方法 : 在数组末尾添加元素 ; pop 方法 : 删除并返回数组的最后一个元素 ; shift 方法 : 删除并返回数组的第一个元素...; unshift 方法 : 在数组开头添加一个或多个元素 ; slice 方法 : 返回数组的一部分 ; 2、数组创建 数组创建 : 使用字面量创建数组 : 创建空数组 : var arr = [...]; 将字面量 [] 赋值给变量 , 创建的是一个空数组 ; 创建非空数组 : var arr = [1, 2, 3] , 将字面量 [1, 2, 3] 赋值给变量 , 创建数组并进行初始化 , 将 1...2 3 三个元素赋值给对象变量 ; 使用 new Array() 创建数组 : 创建空数组 : var arr = new Array(); 创建一个空的数组 , 元素数量为 0 ; 创建非空数组

    8510

    【JavaScript】数组 ① ( JavaScript 数组概念 | 数组创建 | 使用 new 关键字创建数组 | 使用 数组字面量 创建数组 )

    一、JavaScript 数组概念 在 JavaScript 中 提供了一种 特殊的对象 " 数组 " , " 数组 " 对象 可以 在一个 " 连续的内存空间 " 中 " 存储多个值 " ; 数组...array : 数组 中 存储 数组 , 就变成了 二维数组 ; JavaScript 中的 数组 使用起来 很灵活 , 数组的大小可以 动态改变 ; 二、数组创建 1、使用 new 关键字创建数组...使用 new 关键字创建数组 : 创建空数组 : 使用 new 关键字 和 Array 的 构造函数 创建一个空数组 ; let array1 = new Array(); 创建指定个数的数组 :...创建数组 数组 字面量 就是 在 中括号 中 写上 数据值 , 数据值之间使用 逗号 隔开 ; [] 表示 空数组值 ; [1, 2, 3] 表示 有 3 个 number 类型数据的 数组值 ; [...'Tom', 'Jerry'] 表示 有 2 个 String 类型数据 的 数组值 ; 使用 数组字面量 创建数组 : 创建空数组 : 使用 中括号 [] 可以直接创建一个空数组 ; let emptyArray

    16810

    【JavaScript】数组 ⑤ ( 数组案例 | 创建数组存放 1 - 10 元素 | 数组筛选 | 删除数组元素 | 翻转数组元素 | 数组元素冒泡排序 )

    一、JavaScript 数组案例 1、创建数组存放 1 - 10 元素 首先 , 声明一个空数组 ; 然后 , 通过 for 循环 , 通过 " 追加 " 的方式 , 将 1 ~ 10 整数存储到 数组...> 执行结果 : 2、数组筛选 将 给定数组 中 大于 5 的元素筛选出来 , 放入新数组中 ; 首先 , 创建一个新数组 , 用于存放 筛选出来的 大于 5 的元素...; 然后 , 遍历整个数组 , 将符合条件的元素放入新数组中 ; 这里注意 , 向 新数组中追加元素时 , 直接向 newArr 数组的 newArr.length 索引位置设置数组元素即可 ; 也可以定义一个数值变量...5, 2, 7, 2, 2] 中的 元素 2 删除 ; 分析 : 原来的数组中包含 3 个 2 元素 , 如果直接将 2 删除 , 还需要移动数组元素 , 这里直接将符合要求的数组放在新数组即可 ; 实现方案...: 首先 , 创建一个新数组 ; 然后 , 遍历数组 , 将符合要求的元素放入新数组 ; 在新数组中追加元素时 , 直接向 newArr.length 索引 位置 追加元素值 ; 代码示例 :

    9610

    【JavaScript】数组 ③ ( JavaScript 数组长度 | 修改数组长度 | 数组案例 )

    一、JavaScript 数组长度 1、数组长度 在 JavaScript 中 , 数组长度 可以通过 数组变量的 length 属性 获取 , 该属性 返回 数组中的元素数量 , 也就是 数组长度 ;...下面声明了一个数组变量 , 有 3 个元素 ; var arr = ['blue', 'red', 'green']; arr 数组变量的 length 属性 , 就是 数组长度 ; arr.length...JavaScript 数组 的 大小 是 可以 动态调整 的 , 通过修改 数组 的 length 属性 可以 增加或减少 数组的大小 ; 如果 减少 数组的大小 , 则被减少的部分元素 , 直接从数组中删除...1、求数组元素平均值 给定一个数组 , var arr = [1, 2, 3, 4, 5]; 求该数组的平均值 ; 首先 , 遍历累加该数组 ; 然后 , 将累加和 除以 数组长度 , 得到平均值 ;...给定一个数组 , var arr = [3, 9, 5, 2, 7, 4]; 求该数组的最大值 ; 首先 , 定义一个变量存储当前获取的最大值 ; 然后 , 遍历数组每个元素 , 如果遍历到的值大于

    16110

    【进阶指针一】字符数组&数组指针&指针数组

    3-2 初级使用(或者说给你看一下基本使用): 3-3这才是指针数组的正确使用方法!【指针数组模拟打印二维数组】  4....数组指针 4-1 区分取地址数组名和数组名(老生常谈了) 4-2 辨析数组指针和指针数组  4-3 学会了?...来看一个小测试题 4-4  来看一个脱裤子放屁的代码【看一看数组指针的使用】  4-5 这才是数组指针的正确使用方法捏【数组指针模拟打印二维数组】 5 测试题和规律总结 测验1: 测验2:那么指针数组指针...【数组指针模拟打印二维数组】 指针数组虽然可以int(*p)[3]=&arr;其中arr是一个一维数组,但是这样太鸡肋了, 还不如直接int*p arr; 指针数组真正的使用场景是留给二维数组数组名时...答案:数组指针数组 测验2:那么指针数组指针?

    95940

    C语言数组——字符数组

    ——一维数组 C语言数组——二维数组 前面两篇文章分别介绍了一维数组和二维数组,今天我们一起看看字符数组 字符数组 字符数组顾名思义就是数组的元素类型为字符型的数组。...特殊之处在于它是数组元素为字符的数组。其定义的一般形式和注意事项与之前讲解的一般数组类似,只是其中的类型说明符是char。...一维字符数组 首先通过下面一段代码来看看一维字符数组的定义。...从这点可以看出,选用char型作为数组类型避免了内存空间的浪费。下面通过一段代码来了解字符数组的初始化特点。...看看上面代码中定义的arr数组,其数组长度为20,而初始化的字符元素的个数为12,初始化的字符元素个数小于数组长度,编译器在编译过程中将后面没有初始化的数组元素赋值为‘\0’,这也正是打印输出中含有空字符的原因

    6.2K40

    C语言数组——字符数组

    字符数组 字符数组顾名思义就是数组的元素类型为字符型的数组。特殊之处在于它是数组元素为字符的数组。其定义的一般形式和注意事项与之前讲解的一般数组类似,只是其中的类型说明符是char。...一维字符数组 首先通过下面一段代码来看看一维字符数组的定义。...); return 0; } 运行结果: 在上面的代码中定义了不同类型的字符数组来存放相同的字符,可以看出,它们占用的内存大小相差很大,long型字符数组所占用内存大小是char型数组占用内存大小的...从这点可以看出,选用char型作为数组类型避免了内存空间的浪费。下面通过一段代码来了解字符数组的初始化特点。...看看上面代码中定义的arr数组,其数组长度为20,而初始化的字符元素的个数为12,初始化的字符元素个数小于数组长度,编译器在编译过程中将后面没有初始化的数组元素赋值为‘\0’,这也正是打印输出中含有空字符的原因

    7.5K20

    Object数组转String数组

    1、System.arraycopy把一个数组中某一段字节数据放到另一个数组中 //src:源数组;srcPos:源数组要复制的起始位置;dest:目的数组;destPos:目的数组放置的起始位置;length...,在拷贝元素时,会创建一个新的数组对象。...3、Arrays.asList 这里我们首先将对象数组转换为对象列表,然后使用toArray(T[])方法将列表转储到新分配的String数组中,具体使用参考使用指南 Object[] objectArray...//.toArray(new String[objectArray.length]); 4、Java8中Arrays.stream 在Java 8中,我们可以使用Stream API轻松地将对象数组转换为字符串数组...我们的想法是首先将指走的对象数组 转换为顺序Stream,然后使用toArray()方法将流的元素累积到新的字符串数组中。

    2.4K30
    领券