<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)-合并兩個(gè)有序鏈表,刪除排序數(shù)組中的重復(fù)項(xiàng),JavaScript筆記

          共 9285字,需瀏覽 19分鐘

           ·

          2021-03-06 00:10

          Github來(lái)源:力扣 (LeetCode)|刷題打卡 | 求星星 ? | 給個(gè)??關(guān)注,??點(diǎn)贊,??鼓勵(lì)一下作者

          [已開(kāi)啟]任務(wù)一:刷題打卡 * 10 篇

          大家好,我是魔王哪吒,很高興認(rèn)識(shí)你~~

          哪吒人生信條:如果你所學(xué)的東西 處于喜歡 才會(huì)有強(qiáng)大的動(dòng)力支撐

          每天學(xué)習(xí)編程,讓你離夢(mèng)想更新一步,感謝不負(fù)每一份熱愛(ài)編程的程序員,不論知識(shí)點(diǎn)多么奇葩,和我一起,讓那一顆四處流蕩的心定下來(lái),一直走下去,加油,2021加油!歡迎關(guān)注加我vx:xiaoda0423,歡迎點(diǎn)贊、收藏和評(píng)論

          時(shí)間:3 月 1 日 ~ 3 月 13 日

          • 力扣 (LeetCode)-兩數(shù)之和,有效的括號(hào),兩數(shù)相加|刷題打卡-3月1日

          前言

          如果這篇文章有幫助到你,給個(gè)??關(guān)注,??點(diǎn)贊,??鼓勵(lì)一下作者,接收好挑戰(zhàn)了嗎?文章公眾號(hào)首發(fā),關(guān)注 程序員哆啦A夢(mèng) 第一時(shí)間獲取最新的文章

          ??筆芯??~

          21. 合并兩個(gè)有序鏈表

          一、題目描述

          將兩個(gè)升序鏈表合并為一個(gè)新的 升序 鏈表并返回。新鏈表是通過(guò)拼接給定的兩個(gè)鏈表的所有節(jié)點(diǎn)組成的。

          示例 1:

          輸入:l1 = [1,2,4], l2 = [1,3,4]
          輸出:[1,1,2,3,4,4]

          輸入:l1 = [], l2 = []
          輸出:[]

          輸入:l1 = [], l2 = [0]
          輸出:[0]

          二、思路分析

          • 使用遞歸來(lái)解,將兩個(gè)鏈表頭部較小的一個(gè)與剩下的元素合并,并返回排好序的鏈表頭,當(dāng)兩條鏈表中的一條為空時(shí)終止遞歸。
          • 逐一比較最小

          三、答案代碼

          /**
           * Definition for singly-linked list.
           * function ListNode(val, next) {
           *     this.val = (val===undefined ? 0 : val)
           *     this.next = (next===undefined ? null : next)
           * }
           */
          /**
           * @param {ListNode} l1
           * @param {ListNode} l2
           * @return {ListNode}
           */
          var mergeTwoLists = function(l1, l2) {

              // 創(chuàng)建一個(gè)空的鏈表
              let curr = new ListNode();
              // 創(chuàng)建一個(gè)頭
              let dummy = curr;

              while(l1!== null && l2 !==null){
                  // 判斷那個(gè)鏈表的值小,把小的連接起來(lái)
                  if(l1.val<l2.val){
                      curr.next = l1;
                      l1 = l1.next;
                  }else{
                      curr.next = l2;
                       l2= l2.next
                  }
                  curr = curr.next;
              }

              if(l1!==null){
                  curr.next = l1;
              }
              if(l2!==null){
                  curr.next = l2;
              }
              return dummy.next;
          };
           */
          /**
           * @param {ListNode} l1
           * @param {ListNode} l2
           * @return {ListNode}
           */
          const mergeTwoLists = function (l1, l2) {
            if (l1 === null) {
              return l2;
            }
            if (l2 === null) {
              return l1;
            }
            if (l1.val < l2.val) {
              l1.next = mergeTwoLists(l1.next, l2);
              return l1;
            } else {
              l2.next = mergeTwoLists(l1, l2.next);
              return l2;
            }
          };

          知識(shí)補(bǔ)充

          JavaScript筆記

          1. 變量

          JavaScript的類(lèi)型有數(shù)字,字符串,布爾值,函數(shù)和對(duì)象,還有undefinednull,數(shù)組,日期,正則表達(dá)式。

          JavaScript中,使用關(guān)鍵字var,而不必指定變量類(lèi)型,所以,JavaScript不是強(qiáng)類(lèi)型語(yǔ)言。

          1. typeof操作符返回變量或表達(dá)式的類(lèi)型
          console.log(typeof num); // number
          console.log(typeof 'jeskson'); // string
          console.log(typeof true); // boolean
          console.log(typeof [1,2,3]); // object
          console.log(typeof {name:'jeskson'}); // object
          1. JavaScript支持delete操作符,可以刪除對(duì)象里的屬性
          var my = {name: 'jeskson', age: 1};
          delete my.age;
          console.log(my); // {name: 'jeskson'}
          1. 真假
          nudefined // false

          null // false

          布爾值 // truetrue,falsefalse

          數(shù)字 // +0,-0和NaN都為false,其他為true

          字符串 // 如果字符串是空的就是false,其他為true

          對(duì)象 // true
          1. JavaScript面向?qū)ο缶幊?/section>
          • a. var obj = new Object();
          • b. var obj = {}
          obj = {
           name: 'jeskson'
           age: 1
          };

          面向?qū)ο缶幊?strong>OOP,對(duì)象是類(lèi)的實(shí)例,一個(gè)類(lèi)定義了對(duì)象的特征

          在原型的中,函數(shù)只會(huì)創(chuàng)建一次,在所有實(shí)例中共享,如果在類(lèi)的定義里聲明,會(huì)在每個(gè)實(shí)例都會(huì)創(chuàng)建自己的函數(shù)副本,使用原型方法可以節(jié)約內(nèi)存和降低實(shí)例化的開(kāi)銷(xiāo)。原型方法只能聲明公共函數(shù)和屬性,而類(lèi)定義可以聲明只在類(lèi)的內(nèi)部訪問(wèn)的私有函數(shù)和屬性。

          1. ECMAScript是一種腳本語(yǔ)言規(guī)范,JavaScript是這個(gè)規(guī)范的一個(gè)實(shí)現(xiàn)。

          ECMAScript6的功能

          1. letconst
          2. 模板字面量
          3. 解構(gòu)
          4. 展開(kāi)操作符
          5. 箭頭函數(shù)=>
          6. 類(lèi)

          ES6引入了一個(gè)let關(guān)鍵字,可以直接把var關(guān)鍵字都替換成letES6還引入了const關(guān)鍵字,區(qū)別于const`定義的變量是只讀的,也就是常量。

          模板字面量:模板字面量用一對(duì) ` 包裹。要插入變量的值,只要把變量放在${}里就可以了,模板字面量也可以用于多行的字符串

          箭頭函數(shù):

          let circleArea = (r) => 3.14 * r * r;

          函數(shù)的參數(shù)默認(rèn)值:

          function sum (x = 1, y = 2, z = 3) { 
           return x + y + z 
          }; 
          console.log(sum(4,2)); //輸出9

          聲明展開(kāi)和剩余參數(shù):

          • ES5中,我們可以用apply()函數(shù)把數(shù)組轉(zhuǎn)化為參數(shù)
          • ES6有了展開(kāi)操作符(...
          • 在函數(shù)中,展開(kāi)操作符(...)也可以代替arguments,當(dāng)作剩余參數(shù)使用
          console.log(sum(...params));

          console.log(sum.apply(undefined, params));

          function da(x, y, ...a) {
           return (x + y) * a.length;
          }

          function da(x, y) {
           var a = Array.prototype.slice.call(arguments, 2);
           return (x + y) * a.length;
          }

          數(shù)組解構(gòu):

          • 可以用來(lái)一次初始化多個(gè)變量
          • 可以用來(lái)進(jìn)行值的互換,而不需要?jiǎng)?chuàng)建臨時(shí)變量

          對(duì)象解構(gòu):

          var [x, y] = ['a''b']; 
          var obj = { x, y }; 
          console.log(obj); // { x: "a", y: "b" }

          方法屬性:

          var hello = { 
           name : 'dada魔王哪吒'
           printHello() { 
           console.log('Hello'); 
           } 
          }

          var hello = { 
           name: 'dada魔王哪吒'
           printHello: function printHello() { 
           console.log('Hello'); 
           } 
          };

          使用類(lèi)進(jìn)行面向?qū)ο缶幊?

          function dada(name, age) {
           this.name = name;
           this.age = age;
          }
          dada.prototype.printWork = function() {
           console.log(this.name);
          };

          class dada {
           // 聲明一個(gè)有constructor函數(shù)
           constructor(name, age) {
            this.name = name;
            this.age = age;
           }
           printWork() {
            console.log(this.name);
           }
          }

          繼承

          可以使用extends關(guān)鍵字?jǐn)U展一個(gè)類(lèi)并繼承它的行為,在構(gòu)造函數(shù)中,也可以使用super關(guān)鍵字引用父類(lèi)的構(gòu)造函數(shù)。

          JavaScript面向?qū)ο缶幊淌腔谠蛯?shí)現(xiàn)的

          class itBook extends Book {
           costructor(title, pages, isbn, technology) {
            super(title, pages, isbn);
            this.technology = technology;
           }
           printTechnology() {
            console.log(this.technology);
           }
          }

          let daBook = new itBook('魔王哪吒算法''222''1333''JavaScript');

          使用屬性存取器

          是一個(gè)聲明了getset函數(shù)的類(lèi):

          class Person {
           constructor (name) {
            this._name = name;
           }
           get name() {
            return this._name;
           }
           set name(value) {
            this._name = value;
           }
          }

          let dada = new Person('jeskson');

          ddada.name = '魔王哪吒';

          26. 刪除排序數(shù)組中的重復(fù)項(xiàng)

          一、題目描述

          給定一個(gè)排序數(shù)組,你需要在 原地 刪除重復(fù)出現(xiàn)的元素,使得每個(gè)元素只出現(xiàn)一次,返回移除后數(shù)組的新長(zhǎng)度。

          不要使用額外的數(shù)組空間,你必須在 原地 修改輸入數(shù)組 并在使用 O(1) 額外空間的條件下完成。

          示例 1:

          給定數(shù)組 nums = [1,1,2], 

          函數(shù)應(yīng)該返回新的長(zhǎng)度 2, 并且原數(shù)組 nums 的前兩個(gè)元素被修改為 1, 2。 

          你不需要考慮數(shù)組中超出新長(zhǎng)度后面的元素。
          示例 2:

          給定 nums = [0,0,1,1,1,2,2,3,3,4],

          函數(shù)應(yīng)該返回新的長(zhǎng)度 5, 并且原數(shù)組 nums 的前五個(gè)元素被修改為 0, 1, 2, 3, 4。

          你不需要考慮數(shù)組中超出新長(zhǎng)度后面的元素。

          說(shuō)明:

          為什么返回?cái)?shù)值是整數(shù),但輸出的答案是數(shù)組呢?

          請(qǐng)注意,輸入數(shù)組是以「引用」方式傳遞的,這意味著在函數(shù)里修改輸入數(shù)組對(duì)于調(diào)用者是可見(jiàn)的。

          你可以想象內(nèi)部操作如下:

          // nums 是以“引用”方式傳遞的。也就是說(shuō),不對(duì)實(shí)參做任何拷貝
          int len = removeDuplicates(nums);

          // 在函數(shù)里修改輸入數(shù)組對(duì)于調(diào)用者是可見(jiàn)的。
          // 根據(jù)你的函數(shù)返回的長(zhǎng)度, 它會(huì)打印出數(shù)組中該長(zhǎng)度范圍內(nèi)的所有元素。
          for (int i = 0; i < len; i++) {
              print(nums[i]);
          }

          二、思路分析

          使用快慢指針來(lái)記錄遍歷的坐標(biāo),如果兩個(gè)指針指的數(shù)字相同,則快指針向前走一步,如果不同,則兩個(gè)指針都向前走一步,當(dāng)快指針走完整個(gè)數(shù)組后,慢指針當(dāng)前的坐標(biāo)加1,就是數(shù)組中不同數(shù)字的個(gè)數(shù)。

          實(shí)際上這就是雙指針中的快慢指針。在這里快指針是讀指針, 慢指針是寫(xiě)指針。

          三、答案代碼

          /**
           * @param {number[]} nums
           * @return {number}
           */
          var removeDuplicates = function (nums) {
            if (size == 0) return 0;
            let slowP = 0;
            for (let fastP = 0; fastP < nums.length; fastP++) {
              if (nums[fastP] !== nums[slowP]) {
                slowP++;
                nums[slowP] = nums[fastP];
              }
            }
            return slowP + 1;
          };

          總結(jié):

          刪除排序數(shù)組中的重復(fù)項(xiàng),合并兩個(gè)有序鏈表-題解!

          回看筆者往期高贊文章,也許能收獲更多喔!

          • 一個(gè)合格的初級(jí)前端工程師需要掌握的模塊筆記
          • Vue.js筆試題解決業(yè)務(wù)中常見(jiàn)問(wèn)題
          • 【初級(jí)】個(gè)人分享Vue前端開(kāi)發(fā)教程筆記
          • 長(zhǎng)篇總結(jié)之JavaScript,鞏固前端基礎(chǔ)
          • 前端面試必備ES6全方位總結(jié)
          • 達(dá)達(dá)前端個(gè)人web分享92道JavaScript面試題附加回答
          • 【圖文并茂,點(diǎn)贊收藏哦!】重學(xué)鞏固你的Vuejs知識(shí)體系
          • 【思維導(dǎo)圖】前端開(kāi)發(fā)-鞏固你的JavaScript知識(shí)體系
          • 14期-連肝7個(gè)晚上,總結(jié)了計(jì)算機(jī)網(wǎng)絡(luò)的知識(shí)點(diǎn)!(共66條)

          ??關(guān)注+點(diǎn)贊+收藏+評(píng)論+轉(zhuǎn)發(fā)??,原創(chuàng)不易,鼓勵(lì)筆者創(chuàng)作更好的文章

          點(diǎn)贊、收藏和評(píng)論

          我是Jeskson(達(dá)達(dá)前端),感謝各位人才的:點(diǎn)贊、收藏和評(píng)論,我們下期見(jiàn)!(如本文內(nèi)容有地方講解有誤,歡迎指出?謝謝,一起學(xué)習(xí)了)

          我們下期見(jiàn)!

          文章持續(xù)更新,可以微信搜一搜「 程序員哆啦A夢(mèng) 」第一時(shí)間閱讀,回復(fù)【資料】有我準(zhǔn)備的一線(xiàn)大廠資料,本文 http://www.dadaqianduan.cn/#/ 已經(jīng)收錄

          github收錄,歡迎Star:https://github.com/webVueBlog/WebFamily


          瀏覽 58
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  日韩小电影在线观看 | 亚洲精品字幕久久久久 | 国产麻豆成人品免费观看 | 肏骚逼视频 | 精品卡一卡2卡3卡4卡在线 |