力扣 (LeetCode)-最大子序和,JavaScript数据结构与算法(数组)
前言
❤️笔芯❤️~
数组
- 数组是最简单的内存数据结构
- 数组存储一系列同一种数据类型的值,也可以在数组中保存不同类型的值
- 使用
push
方法,能把元素添加到数组的末尾,能添加任意个元素 - 使用
unshift
方法,可以把数值插入数组的首位 - 使用
pop
方法,可以删除数组里最后的元素 - 使用
shift
方法,删除数组的第一个元素
在任意位置添加或删除元素
使用splice
方法,通过指定位置或索引,就可以删除相应位置和数量的元素。
示例:
1 | numbers.splice(5,3); |
二维数组
- 矩阵示例:
1 | //二层 |
1 | //三层 |
数组方法(数组结构和算法会用到的方法)
concat
,连接2个或更多数组,并返回结果every
,对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回truefilter
,对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组forEach
,对数组中的每一项运行给定函数。这个方法没有返回值join
,将所有的数组元素连接成一个字符串indexof
,返回第一个与给定参数相等的数组元素的索引,没有找到则返回-1
lastIndexOf
,返回在数组中搜索到的与给定参数相等的元素的索引里最大的值map
,对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组reverse
,颠倒数组中元素的顺序,原先第一个元素现在变成最后一个,同样原先的最后一个元素变成了现在
的第一个slice
,传入索引值,将数组里对应索引范围内的元素作为新数组返回some
,对数组中的每一项运行给定函数,如果任一项返回true,则返回truesort
,按照字母顺序对数组排序,支持传入指定排序方法的函数作为参数toString
,将数组作为字符串返回valueOf
,和toString类似,将数组作为字符串返回
every
方法会迭代数组中的每个元素,直到返回false
;some
方法迭代数组的每个元素,直到函数返回true
示例:
1 | // 迭代整个数组,可以用forEach方法 |
reduce
方法
reduce
方法接收一个函数作为参数,这个函数有四个参数:previousValue,currentValue,index和array
。
示例:
1 | numbers.reduce(function(previous,current,index){ |
Es6
和Es7
新增的数组方法:
@@iterator
返回一个包含数组键值对的迭代器对象,可以通过同步调用得到数组元素的键值对copyWithin
复制数组中一系列元素到同一数组指定的起始位置entries
返回包含数组所有键值对的@@iterator
includes
如果数组中存在某个元素则返回true,否则返回false。ES7
新增find
根据回调函数给定的条件从数组中查找元素,如果找到则返回该元素findIndex
根据回调函数给定的条件从数组中查找元素,如果找到则返回该元素在数组中的索引fill
用静态值填充数组from
根据已有数组创建一个新数组keys
返回包含数组所有索引的@@iterator
of
根据传入的参数创建一个新数组values
返回包含数组中所有值的@@iterator
使用ES6新的迭代器
(@@iterator)
ES6
为Array
增加了一个@@iterator
属性,需要通过Symbol.iterator
来访问
示例:
1 | let iterator = numbers[Symbol.iterator](); |
entries
方法返回包含键值对的@@iterator
示例:
1 | let aEntries = numbers.entries(); // 得到键值对的迭代器 |
keys
方法返回包含数组索引的@@iterator
示例:
1 | let aKeys = numbers.keys(); // 得到数组索引的迭代器 |
如果done属性的值为false,就意味着还有可迭代的值。否则反之。
values
方法返回的@@iterator
则包含数组的值
示例:
1 | let aValues = numbers.values(); |
Array.from
方法根据已有的数组创建一个新数组
示例:
1 | // 创建数组,复制numbers数组 |
过滤值的函数:
1 | let dada = Array.from(numbers, x=> (x % 2 == 0)); |
Array.of
方法根据传入的参数创建一个新数组
示例:
1 | let da1 = Array.of(1); |
用这个方法复制已有的数组
示例:
1 | let copyNumbers = Array.of(...da2); |
fill
方法用静态值填充数组
示例:
1 | let numbersCopy = Array.of(1, 2, 3, 4, 5, 6); |
copyWithin
方法复制数组中的一系列元素到同一数组指定的起始位置
示例:
1 | let copyArray = [1, 2, 3, 4, 5, 6]; |
搜索
indexOf
方法返回与参数匹配的第一个元素的索引lastIndexOf
返回与参数匹配的最后一个元素的索引
find和findIndex
的不同之处-ECMAScript 6
find
方法返回第一个满足条件的值;找不到,find
会返回undefined
findIndex
方法则返回这个值在数组里的索引,找不到,findIndex
返回-1
使用
includes
方法-ECMAScript 7
toString和join
- 把数组里所有元素输出为一个字符串
示例:
1 | console.log(numbers.toString()); |
53. 最大子序和
一、题目描述
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
1 | 示例 1: |
二、思路分析
方法一,贪心算法,若当前指针元素之前的和小于0,则丢弃当前元素之前的数列
三、答案代码
1 | /** |
四、总结
最大子序和-题解!
回看笔者往期高赞文章,也许能收获更多喔!
- 一个合格的初级前端工程师需要掌握的模块笔记
- Vue.js笔试题解决业务中常见问题
- 【初级】个人分享Vue前端开发教程笔记
- 长篇总结之JavaScript,巩固前端基础
- 前端面试必备ES6全方位总结
- 达达前端个人web分享92道JavaScript面试题附加回答
- 【图文并茂,点赞收藏哦!】重学巩固你的Vuejs知识体系
- 【思维导图】前端开发-巩固你的JavaScript知识体系
- 14期-连肝7个晚上,总结了计算机网络的知识点!(共66条)
❤️关注+点赞+收藏+评论+转发❤️,原创不易,鼓励笔者创作更好的文章