<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          力扣 (LeetCode)-最大子序和,JavaScript數(shù)據(jù)結構與算法(數(shù)組)

          共 7477字,需瀏覽 15分鐘

           ·

          2021-03-04 07:49

          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ù)組

          1. 數(shù)組是最簡單的內存數(shù)據(jù)結構
          2. 數(shù)組存儲一系列同一種數(shù)據(jù)類型的值,也可以在數(shù)組中保存不同類型的值
          3. 使用push方法,能把元素添加到數(shù)組的末尾,能添加任意個元素
          4. 使用unshift方法,可以把數(shù)值插入數(shù)組的首位
          5. 使用pop方法,可以刪除數(shù)組里最后的元素
          6. 使用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ù)組結構和算法會用到的方法)

          1. concat,連接2個或更多數(shù)組,并返回結果
          2. every,對數(shù)組中的每一項運行給定函數(shù),如果該函數(shù)對每一項都返回true,則返回true
          3. filter,對數(shù)組中的每一項運行給定函數(shù),返回該函數(shù)會返回true的項組成的數(shù)組
          4. forEach,對數(shù)組中的每一項運行給定函數(shù)。這個方法沒有返回值
          5. join,將所有的數(shù)組元素連接成一個字符串
          6. indexof,返回第一個與給定參數(shù)相等的數(shù)組元素的索引,沒有找到則返回-1
          7. lastIndexOf,返回在數(shù)組中搜索到的與給定參數(shù)相等的元素的索引里最大的值
          8. map,對數(shù)組中的每一項運行給定函數(shù),返回每次函數(shù)調用的結果組成的數(shù)組
          9. reverse,顛倒數(shù)組中元素的順序,原先第一個元素現(xiàn)在變成最后一個,同樣原先的最后一個元素變成了現(xiàn)在 的第一個
          10. slice,傳入索引值,將數(shù)組里對應索引范圍內的元素作為新數(shù)組返回
          11. some,對數(shù)組中的每一項運行給定函數(shù),如果任一項返回true,則返回true
          12. sort,按照字母順序對數(shù)組排序,支持傳入指定排序方法的函數(shù)作為參數(shù)
          13. toString,將數(shù)組作為字符串返回
          14. 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;
          });

          Es6Es7新增的數(shù)組方法:

          • @@iterator 返回一個包含數(shù)組鍵值對的迭代器對象,可以通過同步調用得到數(shù)組元素的鍵值對
          • copyWithin 復制數(shù)組中一系列元素到同一數(shù)組指定的起始位置
          • entries 返回包含數(shù)組所有鍵值對的@@iterator
          • includes 如果數(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ù)組所有索引的@@iterator
          • of 根據(jù)傳入的參數(shù)創(chuàng)建一個新數(shù)組
          • values 返回包含數(shù)組中所有值的@@iterator

          使用ES6新的迭代器(@@iterator)

          ES6Array增加了一個@@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, donefalse } 
          console.log(aKeys.next()); // {value: 1, donefalse } 
          console.log(aKeys.next()); // {value: 2, donefalse }

          如果done屬性的值為false,就意味著還有可迭代的值。否則反之。

          values方法返回的@@iterator則包含數(shù)組的值

          示例:

          let aValues = numbers.values(); 
          console.log(aValues.next()); // {value: 1, donefalse } 
          console.log(aValues.next()); // {value: 2, donefalse } 
          console.log(aValues.next()); // {value: 3, donefalse }

          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會返回undefined
          • findIndex方法則返回這個值在數(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

          瀏覽 73
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  屄网 | 91精品国内手机在线高清 | 91视屏18 | 欧美性交免费网站 | 波多野结衣香蕉 |