力扣 (LeetCode)-最大子序和,JavaScript數(shù)據(jù)結構與算法(數(shù)組)
Github來源:力扣 (LeetCode)|刷題打卡 | 求星星 ? | 給個??關注,??點贊,??鼓勵一下作者
[已開啟]任務一:刷題打卡 * 10 篇
大家好,我是魔王哪吒,很高興認識你~~
哪吒人生信條:如果你所學的東西 處于喜歡 才會有強大的動力支撐。
每天學習編程,讓你離夢想更新一步,感謝不負每一份熱愛編程的程序員,不論知識點多么奇葩,和我一起,讓那一顆四處流蕩的心定下來,一直走下去,加油,2021加油!歡迎關注加我vx:xiaoda0423,歡迎點贊、收藏和評論
時間:3 月 1 日 ~ 3 月 13 日
力扣 (LeetCode)-兩數(shù)之和,有效的括號,兩數(shù)相加|刷題打卡-3月1日 力扣 (LeetCode)-合并兩個有序鏈表,刪除排序數(shù)組中的重復項,JavaScript筆記|刷題打卡-3月2日
前言
如果這篇文章有幫助到你,給個??關注,??點贊,??鼓勵一下作者,接收好挑戰(zhàn)了嗎?文章公眾號首發(fā),關注 程序員哆啦A夢 第一時間獲取最新的文章
??筆芯??~
數(shù)組
數(shù)組是最簡單的內存數(shù)據(jù)結構 數(shù)組存儲一系列同一種數(shù)據(jù)類型的值,也可以在數(shù)組中保存不同類型的值 使用 push方法,能把元素添加到數(shù)組的末尾,能添加任意個元素使用 unshift方法,可以把數(shù)值插入數(shù)組的首位使用 pop方法,可以刪除數(shù)組里最后的元素使用 shift方法,刪除數(shù)組的第一個元素
在任意位置添加或刪除元素
使用splice方法,通過指定位置或索引,就可以刪除相應位置和數(shù)量的元素。
示例:
numbers.splice(5,3);
// 刪除了從數(shù)組索引5開始的3個元素
numbers.splice(5, 0, 1,2,3);
// 從索引5開始添加元素
numbers.splice(5, 3, 1,2,3);
// 從索引5開始刪除了3個元素
二維數(shù)組
矩陣示例:
//二層
function printMatrix(myMatrix) {
for (var i=0; i<myMatrix.length; i++){
for (var j=0; j<myMatrix[i].length; j++){
console.log(myMatrix[i][j]);
}
}
}
//三層
for (var i=0; i<matrix3x3x3.length; i++){
for (var j=0; j<matrix3x3x3[i].length; j++){
for (var z=0; z<matrix3x3x3[i][j].length; z++){
console.log(matrix3x3x3[i][j][z]);
}
}
}
數(shù)組方法(數(shù)組結構和算法會用到的方法)
concat,連接2個或更多數(shù)組,并返回結果every,對數(shù)組中的每一項運行給定函數(shù),如果該函數(shù)對每一項都返回true,則返回truefilter,對數(shù)組中的每一項運行給定函數(shù),返回該函數(shù)會返回true的項組成的數(shù)組forEach,對數(shù)組中的每一項運行給定函數(shù)。這個方法沒有返回值join,將所有的數(shù)組元素連接成一個字符串indexof,返回第一個與給定參數(shù)相等的數(shù)組元素的索引,沒有找到則返回-1lastIndexOf,返回在數(shù)組中搜索到的與給定參數(shù)相等的元素的索引里最大的值map,對數(shù)組中的每一項運行給定函數(shù),返回每次函數(shù)調用的結果組成的數(shù)組reverse,顛倒數(shù)組中元素的順序,原先第一個元素現(xiàn)在變成最后一個,同樣原先的最后一個元素變成了現(xiàn)在 的第一個slice,傳入索引值,將數(shù)組里對應索引范圍內的元素作為新數(shù)組返回some,對數(shù)組中的每一項運行給定函數(shù),如果任一項返回true,則返回truesort,按照字母順序對數(shù)組排序,支持傳入指定排序方法的函數(shù)作為參數(shù)toString,將數(shù)組作為字符串返回valueOf,和toString類似,將數(shù)組作為字符串返回
every方法會迭代數(shù)組中的每個元素,直到返回false;some方法迭代數(shù)組的每個元素,直到函數(shù)返回true
示例:
// 迭代整個數(shù)組,可以用forEach方法
numbers.forEach(function(ex){
console.log((x % 2 == 0));
});
reduce方法
reduce方法接收一個函數(shù)作為參數(shù),這個函數(shù)有四個參數(shù):previousValue,currentValue,index和array。
示例:
numbers.reduce(function(previous,current,index){
return previous + current;
});
Es6和Es7新增的數(shù)組方法:
@@iterator返回一個包含數(shù)組鍵值對的迭代器對象,可以通過同步調用得到數(shù)組元素的鍵值對copyWithin復制數(shù)組中一系列元素到同一數(shù)組指定的起始位置entries返回包含數(shù)組所有鍵值對的@@iteratorincludes如果數(shù)組中存在某個元素則返回true,否則返回false。ES7新增find根據(jù)回調函數(shù)給定的條件從數(shù)組中查找元素,如果找到則返回該元素findIndex根據(jù)回調函數(shù)給定的條件從數(shù)組中查找元素,如果找到則返回該元素在數(shù)組中的索引fill用靜態(tài)值填充數(shù)組from根據(jù)已有數(shù)組創(chuàng)建一個新數(shù)組keys返回包含數(shù)組所有索引的@@iteratorof根據(jù)傳入的參數(shù)創(chuàng)建一個新數(shù)組values返回包含數(shù)組中所有值的@@iterator
使用ES6新的迭代器
(@@iterator)
ES6為Array增加了一個@@iterator屬性,需要通過Symbol.iterator來訪問
示例:
let iterator = numbers[Symbol.iterator]();
console.log(iterator.next().value); // 1
console.log(iterator.next().value); // 2
console.log(iterator.next().value); // 3
console.log(iterator.next().value); // 4
console.log(iterator.next().value); // 5
entries方法返回包含鍵值對的@@iterator
示例:
let aEntries = numbers.entries(); // 得到鍵值對的迭代器
console.log(aEntries.next().value); // [0, 1] - 位置0的值為1
console.log(aEntries.next().value); // [1, 2] - 位置1的值為2
console.log(aEntries.next().value); // [2, 3] - 位置2的值為3
keys方法返回包含數(shù)組索引的@@iterator
示例:
let aKeys = numbers.keys(); // 得到數(shù)組索引的迭代器
console.log(aKeys.next()); // {value: 0, done: false }
console.log(aKeys.next()); // {value: 1, done: false }
console.log(aKeys.next()); // {value: 2, done: false }
如果done屬性的值為false,就意味著還有可迭代的值。否則反之。
values方法返回的@@iterator則包含數(shù)組的值
示例:
let aValues = numbers.values();
console.log(aValues.next()); // {value: 1, done: false }
console.log(aValues.next()); // {value: 2, done: false }
console.log(aValues.next()); // {value: 3, done: false }
Array.from方法根據(jù)已有的數(shù)組創(chuàng)建一個新數(shù)組
示例:
// 創(chuàng)建數(shù)組,復制numbers數(shù)組
let copyNumbers = Array.from(numbers);
過濾值的函數(shù):
let dada = Array.from(numbers, x=> (x % 2 == 0));
Array.of方法根據(jù)傳入的參數(shù)創(chuàng)建一個新數(shù)組
示例:
let da1 = Array.of(1);
let da2 = Array.of(1, 2, 3, 4, 5, 6);
let da1 = [1];
let da2 = [1, 2, 3, 4, 5, 6];
用這個方法復制已有的數(shù)組
示例:
let copyNumbers = Array.of(...da2);
fill方法用靜態(tài)值填充數(shù)組
示例:
let numbersCopy = Array.of(1, 2, 3, 4, 5, 6);
numbersCopy.fill(0);
// [0, 0, 0, 0, 0, 0]
numbersCopy.fill(2, 1);
// [0, 2, 2, 2, 2, 2]
let da = Array(6).fill(1);
// [1, 1, 1, 1, 1, 1]
copyWithin方法復制數(shù)組中的一系列元素到同一數(shù)組指定的起始位置
示例:
let copyArray = [1, 2, 3, 4, 5, 6];
copyArray.copyWithin(0, 3);
// [4, 5, 6, 4, 5, 6]
copyArray = [1, 2, 3, 4, 5, 6];
copyArray.copyWithin(1, 3, 5);
// [1, 4, 5, 4, 5, 6]
搜索
indexOf方法返回與參數(shù)匹配的第一個元素的索引lastIndexOf返回與參數(shù)匹配的最后一個元素的索引
find和findIndex的不同之處-ECMAScript 6
find方法返回第一個滿足條件的值;找不到,find會返回undefinedfindIndex方法則返回這個值在數(shù)組里的索引,找不到,findIndex返回-1
使用
includes方法-ECMAScript 7
toString和join
把數(shù)組里所有元素輸出為一個字符串
示例:
console.log(numbers.toString());
var numbersString = numbers.join('-');
console.log(numbersString);
53. 最大子序和
一、題目描述
給定一個整數(shù)數(shù)組 nums ,找到一個具有最大和的連續(xù)子數(shù)組(子數(shù)組最少包含一個元素),返回其最大和。
示例 1:
輸入:nums = [-2,1,-3,4,-1,2,1,-5,4]
輸出:6
解釋:連續(xù)子數(shù)組 [4,-1,2,1] 的和最大,為 6 。
示例 2:
輸入:nums = [1]
輸出:1
示例 3:
輸入:nums = [0]
輸出:0
示例 4:
輸入:nums = [-1]
輸出:-1
示例 5:
輸入:nums = [-100000]
輸出:-100000
二、思路分析
方法一,貪心算法,若當前指針元素之前的和小于0,則丟棄當前元素之前的數(shù)列






三、答案代碼
/**
* @param {number[]} nums
* @return {number}
*/
var maxSubArray = function(nums) {
let res = nums[0];
let sum = 0;
for(let i=0;i<nums.length;i++){
if(sum>0) {
sum += nums[i];
}else {
sum = nums[i];
}
res = Math.max(res,sum);
}
return res;
};
四、總結
最大子序和-題解!
回看筆者往期高贊文章,也許能收獲更多喔!
一個合格的初級前端工程師需要掌握的模塊筆記 Vue.js筆試題解決業(yè)務中常見問題 【初級】個人分享Vue前端開發(fā)教程筆記 長篇總結之JavaScript,鞏固前端基礎 前端面試必備ES6全方位總結 達達前端個人web分享92道JavaScript面試題附加回答 【圖文并茂,點贊收藏哦!】重學鞏固你的Vuejs知識體系 【思維導圖】前端開發(fā)-鞏固你的JavaScript知識體系 14期-連肝7個晚上,總結了計算機網(wǎng)絡的知識點?。ü?6條)
??關注+點贊+收藏+評論+轉發(fā)??,原創(chuàng)不易,鼓勵筆者創(chuàng)作更好的文章
點贊、收藏和評論
我是Jeskson(達達前端),感謝各位人才的:點贊、收藏和評論,我們下期見!(如本文內容有地方講解有誤,歡迎指出?謝謝,一起學習了)
我們下期見!
文章持續(xù)更新,可以微信搜一搜「 程序員哆啦A夢 」第一時間閱讀,回復【資料】有我準備的一線大廠資料,本文 http://www.dadaqianduan.cn/#/ 已經收錄
github收錄,歡迎Star:https://github.com/webVueBlog/WebFamily
