arr

ES6 Array.from() 的使用 学习记录

旧巷老猫 提交于 2020-02-04 04:16:15
引用:https://www.cnblogs.com/jf-67/p/8440758.html Array.from() Array.from()方法就是 将一个类数组对象或者可遍历对象转换成一个真正的数组 。 那么什么是类数组对象呢?所谓类数组对象,最基本的要求就是具有length属性的对象。 1、将类数组对象转换为真正数组 let arrayLike = { 0: 'tom', 1: '65', 2: '男', 3: ['jane','john','Mary'], 'length': 4 } let arr = Array.from(arrayLike) console.log(arr) // ['tom','65','男',['jane','john','Mary']] 那么,如果将上面代码中length属性去掉呢?实践证明,答案会是一个长度为0的空数组。 这里将代码再改一下,就是具有length属性,但是对象的属性名不再是数字类型的,而是其他字符串型的,代码如下: let arrayLike = { 'name': 'tom', 'age': '65', 'sex': '男', 'friends': ['jane','john','Mary'], length: 4 } let arr = Array.from(arrayLike) console.log(arr) //

345. 反转字符串中的元音字母

孤人 提交于 2020-02-04 02:57:51
解题思路: 1.先将字符串转成字符数组 2.分别从前后遍历字符数组,如果前后都遍历到了元音字母,就交换两个字符,否则,就继续下一次遍历,直到前后都遍历到了元音字母 3.将字符数组转字符串 代码实现: class Solution { public String reverseVowels(String s) { //元音字母:a,e,i,o,u(区分大小写) int len=s.length(); int i=0;//从前向后遍历 int j=len-1;//从后向前遍历 char[] num=new char[200]; num['a']=1; num['e']=1; num['i']=1; num['o']=1; num['u']=1; num['A']=1; num['E']=1; num['I']=1; num['O']=1; num['U']=1; //字符串转字符数组 char[] arr = s.toCharArray(); while(i<j){ if(num[arr[i]]==0){ i++; continue; } if(num[arr[j]]==0){ j--; continue; } //交换i和j处的字符 char temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; i++; j--; } //字符数组转字符串 s

JavaScript中Array

醉酒当歌 提交于 2020-02-04 02:48:07
一,针对于数组 const arr = ['a','b','c','d']; Array.indexOf 将“返回第一次出现给定元素的索引”; console.log(arr.indexOf('b')); // 1 Array.includes 只想知道数组是否包含某个值;布尔值 console.log(arr.includes('c')); // true 二,针对于数组对象 const objArr = [ { id: 1, name: 'a' }, { id: 2, name: 'b' }, { id: 3, name: 'c' }, { id: 4, name: 'd' }, { id: 5, name: 'b' }, ] function getObj (name) { return objArr => objArr.name===name; } Array.filter 返回一个新的数组,过滤,它接受一个回调函数作为参数,基于一个包含所有元素的数组创建出一个新的数组。遍历整个数组; console.log(objArr.filter(getObj('b'))); // [{ id: 2, name: 'b' },{ id: 5, name: 'b' }] Array.find 返回一个元素值,只要找到第一个满足回调函数的元素,Array.find 就会停止

Java排序算法

拟墨画扇 提交于 2020-02-04 00:53:35
排序算法 一、概述 排序算法(Sort Algorithm),排序是将一组数据依指定的顺序进行排列的过程 1. 分类 1.1 内部排序 将需要处理的所有数据都加载到**内部存储器(内存)**中进行排序 1.2 外部排序 数据量过大时,无法全部加载到内存中,需要借助外部存储器进行排序 2. 常见排序算法 二、算法的时间复杂度 1. 时间频度 一个算法花费的时间与算法中语句的执行次数成正比例,算法中语句的执行次数越多,则它花费的时间就越多。 一个算法中的语句执行次数称为语句频度或时间频度 ,记为: T(n) 2. 举例说明 2*n+20和2n随着n的增大,两个表达式的结果会逐渐接近 2n 2+3n+10和2n 2随着n增大,两个表达式的值会逐渐接近 随着n的增大,5n 2+7n和3n 2+2n结果逐渐接近 结论 : 常数项可以忽略 低次项可以忽略 高次项系数可以忽略 3. 时间复杂度 一般情况下,算法中的基本操作语句的重复执行次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n) / f(n)的极限值为不等于零的常数,则称f(n)为T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n))为算法的渐进时间复杂度,简称时间复杂度 T(n)不同,当时间复杂度可能相同。如:T(n)=n 2+7n+6与T(n)=3n 2+2n

js(四)——ECMAScript基础之数组

强颜欢笑 提交于 2020-02-04 00:39:22
数组的定义 数组是一个有序的列表, 可以在数组中存放任意的数据 ,并且数组的长度可以动态的调整。 通过数组字面量创建数组 // 创建一个空数组 var arr1 = []; // 创建一个包含3个数值的数组,多个数组项以逗号隔开 var arr2 = [1, 3, 4]; // 创建一个包含2个字符串的数组 var arr3 = ['a', 'c']; ​ // 可以通过数组的length属性获取数组的长度 console.log(arr3.length); // 可以设置length属性改变数组中元素的个数 arr3.length = 0; 获取数组元素 数组的取值 // 格式:数组名[下标] 下标又称索引 // 功能:获取数组对应下标的那个值,如果下标不存在,则返回undefined。 var arr = ['red',, 'green', 'blue']; arr[0]; // red arr[2]; // blue arr[3]; // 这个数组的最大下标为2,因此返回undefined 遍历数组 遍历:遍及所有,对数组的每一个元素都访问一次就叫遍历。 数组遍历的基本语法: for(var i = 0; i < arr.length; i++) { // 数组遍历的固定结构 } 数组中新增元素 数组的赋值 // 格式:数组名[下标/索引] = 值; // 如果下标有对应的值

算法与数据结构2

时光总嘲笑我的痴心妄想 提交于 2020-02-03 13:47:28
算法与数据结构02-线性查找和二分查找(队列和栈) 线性查找 :顺序查找,速度较慢 package com . kele ; import java . sql . SQLOutput ; import java . util . Arrays ; /**队列: 先进先出 * @author 12402 */ public class MyQueue { private int [ ] arr ; public MyQueue ( ) { arr = new int [ 0 ] ; } // 往队列中添加元素 public void add ( int target ) { int [ ] newArr = new int [ arr . length + 1 ] ; for ( int i = 0 ; i < arr . length ; i ++ ) { newArr [ i ] = arr [ i ] ; } newArr [ newArr . length - 1 ] = target ; arr = newArr ; } // 展示队列元素 public void show ( ) { System . out . println ( Arrays . toString ( arr ) ) ; } // 取出最先静茹的元素 public int pop ( ) { int

sizeof 和 strlen 计算数组大小和长度详解

廉价感情. 提交于 2020-02-03 08:28:26
sizeof 首先sizeof并非为一个函数,而是C语言中的一个关键字。 sizeof计算对象所占内存的大小,判断操作数的类型长度,以字节为单位; 指针在32位系统占4个字节,在64位系统占8个字节,本实例都在32位机器上操作。 sizeof 求大小看的仅仅是它的类型大小,而非其他。所以我们在计算时只要认清楚它的类型大小就行。 arr 和 &arr 的区别. int arr[10] = { 0 ); arr -> 本意为数组arr 的第一个元素的地址,但是在 sizeof (arr) 中被特殊化为求整个数组 arr 的大小(这是一个特例),所以 sizeof (arr) = 40; &arr -> 意思为整个数组的内存地址,所以 sizeof (&arr) = 4;(因为它是一个数组指针) arr + 1 和 &arr + 1 的区别 arr 为首元素的地址 *,arr + 1 -> 即加了一个int * (4)的大小. &arr 为数组的地址, 数组的地址 + 1 -> 即跳过了整个数组的大小,所以相当于加了 40; <1> char arr [ ] = { 'a' , 'b' , 'c' , 'd' } ; 1. printf ( "%d\n" , sizeof ( arr ) ) ; //4 2. printf ( "%d\n" , sizeof ( arr + 0 ) )

二、数组大小减半(Weekly Contest 174)

只谈情不闲聊 提交于 2020-02-03 07:33:18
题目描述: 给你一个整数数组 arr。你可以从中选出一个整数集合,并删除这些整数在数组中的每次出现。 返回 至少 能删除数组中的一半整数的整数集合的最小大小。 示例 1: 输入:arr = [3,3,3,3,5,5,5,2,2,7] 输出:2 解释:选择 {3,7} 使得结果数组为 [5,5,5,2,2]、长度为 5(原数组长度的一半)。 大小为 2 的可行集合有 {3,5},{3,2},{5,2}。 选择 {2,7} 是不可行的,它的结果数组为 [3,3,3,3,5,5,5],新数组长度大于原数组的二分之一。 示例 2: 输入:arr = [7,7,7,7,7,7] 输出:1 解释:我们只能选择集合 {7},结果数组为空。 示例 3: 输入:arr = [1,9] 输出:1 示例 4: 输入:arr = [1000,1000,3,7] 输出:1 示例 5: 输入:arr = [1,2,3,4,5,6,7,8,9,10] 输出:5 提示: 1 <= arr.length <= 10^5 arr.length 为偶数 1 <= arr[i] <= 10^5 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reduce-array-size-to-the-half 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处

LeetCode 5329. 数组大小减半

北城余情 提交于 2020-02-03 06:58:53
1. 题目 给你一个整数数组 arr。你可以从中选出一个整数集合,并删除这些整数在数组中的每次出现。 返回 至少 能删除数组中的 一半整数 的整数集合的 最小 大小。 示例 1 : 输入:arr = [ 3 , 3 , 3 , 3 , 5 , 5 , 5 , 2 , 2 , 7 ] 输出: 2 解释:选择 { 3 , 7 } 使得结果数组为 [ 5 , 5 , 5 , 2 , 2 ] 、长度为 5 (原数组长度的一半)。 大小为 2 的可行集合有 { 3 , 5 } , { 3 , 2 } , { 5 , 2 } 。 选择 { 2 , 7 } 是不可行的,它的结果数组为 [ 3 , 3 , 3 , 3 , 5 , 5 , 5 ] ,新数组长度大于原数组的二分之一。 示例 2 : 输入:arr = [ 7 , 7 , 7 , 7 , 7 , 7 ] 输出: 1 解释:我们只能选择集合 { 7 } ,结果数组为空。 示例 3 : 输入:arr = [ 1 , 9 ] 输出: 1 示例 4 : 输入:arr = [ 1000 , 1000 , 3 , 7 ] 输出: 1 示例 5 : 输入:arr = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ] 输出: 5 提示: 1 <= arr . length <= 10 ^ 5 arr . length

LeetCode 5331. 跳跃游戏 V(DP)

允我心安 提交于 2020-02-03 03:27:00
1. 题目 给你一个整数数组 arr 和一个整数 d 。每一步你可以从下标 i 跳到: i + x ,其中 i + x < arr.length 且 0 < x <= d 。 i - x ,其中 i - x >= 0 且 0 < x <= d 。 除此以外,你从下标 i 跳到下标 j 需要满足: arr[i] > arr[j] 且 arr[i] > arr[k] ,其中下标 k 是 所有 i 到 j 之间的数字(更正式的, min(i, j) < k < max(i, j) )。 你可以选择数组的 任意 下标开始跳跃。请你返回你 最多 可以访问多少个下标。 请注意,任何时刻你都不能跳到数组的外面。 示例 1: 输入:arr = [ 6 , 4 , 14 , 6 , 8 , 13 , 9 , 7 , 10 , 6 , 12 ] , d = 2 输出: 4 解释:你可以从下标 10 出发,然后如上图依次经过 10 -- > 8 -- > 6 -- > 7 。 注意,如果你从下标 6 开始,你只能跳到下标 7 处。你不能跳到下标 5 处因为 13 > 9 。 你也不能跳到下标 4 处,因为下标 5 在下标 4 和 6 之间且 13 > 9 。 类似的,你不能从下标 3 处跳到下标 2 或者下标 1 处。 示例 2 : 输入:arr = [ 3 , 3 , 3 , 3 , 3 ] , d