国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

leetcode — JavaScript專題(五):計數(shù)器 II、只允許一次函數(shù)調(diào)用、 創(chuàng)建 Hello World 函數(shù)、將對象數(shù)組轉(zhuǎn)換為矩陣、節(jié)流、分塊數(shù)組

這篇具有很好參考價值的文章主要介紹了leetcode — JavaScript專題(五):計數(shù)器 II、只允許一次函數(shù)調(diào)用、 創(chuàng)建 Hello World 函數(shù)、將對象數(shù)組轉(zhuǎn)換為矩陣、節(jié)流、分塊數(shù)組。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

專欄聲明:只求用最簡單的,容易理解的方法通過,不求優(yōu)化,不喜勿噴

2665. 計數(shù)器 II

題面

請你寫一個函數(shù) createCounter. 這個函數(shù)接收一個初始的整數(shù)值 init 并返回一個包含三個函數(shù)的對象。

這三個函數(shù)是:

increment() 將當前值加 1 并返回。
decrement() 將當前值減 1 并返回。
reset() 將當前值設(shè)置為 init 并返回。

知識點:

閉包

思路

編寫一個閉包保存我們的變量的當前數(shù)值,之后對于不同的操作對這個數(shù)據(jù)進行增減即可,注意 init 作為我們傳入的數(shù)值,也可以作為一個閉包中可以獲取和操作的數(shù)值

代碼
var createCounter = function(init) {
     var now = init;
     let increment = () => {
         return ++now;
     }
     let decrement = () => {
         return --now;
     }
     let reset = () => {
         return now = init;
     }
     return {increment,decrement,reset }
};

/**
 * const counter = createCounter(5)
 * counter.increment(); // 6
 * counter.reset(); // 5
 * counter.decrement(); // 4
 */

2666. 只允許一次函數(shù)調(diào)用

題面

給定一個函數(shù) fn ,它返回一個新的函數(shù),返回的函數(shù)與原始函數(shù)完全相同,只不過它確保 fn 最多被調(diào)用一次。

第一次調(diào)用返回的函數(shù)時,它應該返回與 fn 相同的結(jié)果。
第一次后的每次調(diào)用,它應該返回 undefined 。

知識點:

閉包

思路

我們設(shè)定一個變量標識這個函數(shù)是不是運行過了,之后每次調(diào)用的時候判定,如果調(diào)用過了就返回 undefined ,否則返回函數(shù)的執(zhí)行結(jié)果即可

代碼
var once = function(fn) {

    var first = 0;
    return function(...args){
        if(first == 0){
              first++;
            return fn(...args)
        }else{
            return undefined
        }
    }
};

2667. 創(chuàng)建 Hello World 函數(shù)

題面

請你編寫一個名為 createHelloWorld 的函數(shù)。它應該返回一個新的函數(shù),該函數(shù)總是返回 “Hello World” 。

知識點:

思路

返回 “Hello World” 即可,純?nèi)踔?/p>

代碼
var createHelloWorld = function() {
    return function(...args) {
        return "Hello World";
    }
};

/**
 * const f = createHelloWorld();
 * f(); // "Hello World"
 */

2675. 將對象數(shù)組轉(zhuǎn)換為矩陣

題面

編寫一個函數(shù),將對象數(shù)組 arr 轉(zhuǎn)換為矩陣 m 。

arr 是一個由對象組成的數(shù)組或一個數(shù)組。數(shù)組中的每個項都可以包含深層嵌套的子數(shù)組和子對象。它還可以包含數(shù)字、字符串、布爾值和空值。

矩陣 m 的第一行應該是列名。如果沒有嵌套,列名是對象中的唯一鍵。如果存在嵌套,列名是對象中相應路徑,以點號 “.” 分隔。

剩余的每一行對應 arr 中的一個對象。矩陣中的每個值對應對象中的一個值。如果給定對象在給定列中沒有值,則應該包含空字符串 “” 。

矩陣中的列應按 字典升序 排列。

知識點:

深度優(yōu)先遍歷、set、哈希表

思路

dfs遞歸遍歷給出的對象,用一個 path 數(shù)組保存已經(jīng)經(jīng)過的路徑,方便生成 key

  • 如果遇到的是基礎(chǔ)類型,直接把 key 和 value 進行保存
  • 如果是數(shù)組類型,對數(shù)組的每一項進行dfs 遍歷,并將 index 放入路徑參數(shù)中
  • 如果是對象類型,對對象的每個 key 進行 dfs 遍歷,并將 key 放入路徑參數(shù)中
    遍歷完成后,遍歷每一行的 map,獲取所有的 key 的信息,之后重新遍歷我們每一行的map,對每個 key 獲取信息,生成我們需要的結(jié)果返回即可
代碼
type Value = string | number | boolean | null

function jsonToMatrix(arr: any[]): Value[][] {
  const rows: Map<string, Value>[] = []

  arr.forEach(item => {
    const rowMap = new Map<string, Value>()
    dfs(item, [], rowMap)
    rows.push(rowMap)
  })

  const allKey = new Set<string>()
  rows.forEach(mp => {
    for (const key of mp.keys()) {
      allKey.add(key)
    }
  })
  const row0 = [...allKey].sort()

  const res: Value[][] = Array(arr.length + 1)
  res[0] = row0
  for (let i = 1; i < res.length; i++) {
    res[i] = Array(allKey.size).fill('')
    for (let j = 0; j < row0.length; j++) {
      const mp = rows[i - 1]
      if (mp.has(row0[j])) {
        res[i][j] = mp.get(row0[j])!
      }
    }
  }
  return res

  function dfs(obj: any, path: string[], rowMap: Map<string, Value>): void {
    if (!isObject(obj)) {
      const key = path.join('.')
      rowMap.set(key, obj)
      return
    }

    if (Array.isArray(obj)) {
      obj.forEach((item, index) => {
        path.push(String(index))
        dfs(item, path, rowMap)
        path.pop()
      })
    }

    Object.entries(obj).forEach(([key, val]) => {
      path.push(key)
      dfs(val, path, rowMap)
      path.pop()
    })
  }
}

function isObject(val: unknown): val is object {
  return typeof val === 'object' && val !== null
}

2676. 節(jié)流

題面

現(xiàn)給定一個函數(shù) fn 和一個以毫秒為單位的時間 t ,請你返回該函數(shù)的 節(jié)流 版本。

節(jié)流 函數(shù)首先立即被調(diào)用,然后在 t 毫秒的時間間隔內(nèi)不能再次執(zhí)行,但應該存儲最新的函數(shù)參數(shù),以便在延遲結(jié)束后使用這些參數(shù)調(diào)用 fn 。

知識點:

節(jié)流

思路

我們設(shè)定一個變量記錄我們上一輪的運行的時間,每當我們有新的任務(wù)調(diào)用時,如果它已經(jīng)比上一輪調(diào)用晚了 t 時間以上,我們直接運行這個任務(wù),然后記錄當前時間為上一輪運行時間;
如果我們當前任務(wù)還不能執(zhí)行,我們通過上一輪執(zhí)行時間和當前時間的差以及 t 的值算出它需要推遲多久,開始一個計數(shù)器,在這段時間后執(zhí)行我們的函數(shù),我們保存這個計時器,方便我們?nèi)∠?br> 每次開始計時器的時候,我們要取消已經(jīng)存在的計時器,也就是取消上一次的任務(wù),以便于每次都能執(zhí)行最新的任務(wù)。

代碼
var throttle = function (fn, t) {
    let timer = null;
    let mt = 0;
    return function (...args) {
        let now = Date.now();
        if (now - mt > t) {
            mt = now;
            fn(...args)
        }else{
            clearTimeout(timer);
            timer = setTimeout(() => {
                mt += t ;
                fn(...args)
            },  t - now + mt)
        }
    }
};

/**
 * const throttled = throttle(console.log, 100);
 * throttled("log"); // logged immediately.
 * throttled("log"); // logged at t=100ms.
 */

2677. 分塊數(shù)組

題面

給定一個數(shù)組 arr 和一個塊大小 size ,返回一個 分塊 的數(shù)組。分塊 的數(shù)組包含了 arr 中的原始元素,但是每個子數(shù)組的長度都是 size 。如果 arr.length 不能被 size 整除,那么最后一個子數(shù)組的長度可能小于 size 。

你可以假設(shè)該數(shù)組是 JSON.parse 的輸出結(jié)果。換句話說,它是有效的JSON。

請你在不使用 lodash 的函數(shù) _.chunk 的情況下解決這個問題。

知識點:

數(shù)組

思路

遍歷原數(shù)組,將元素依次放入臨時數(shù)組中,到達指定長度就將臨時數(shù)組放進我們的結(jié)果數(shù)組并且清空臨時數(shù)組,最后把剩下的元素(如果還有的話)一起放入結(jié)果數(shù)組,返回結(jié)果即可文章來源地址http://www.zghlxwxcb.cn/news/detail-774878.html

代碼
var chunk = function(arr, size) {
    let re = [ ];
    let t = [];
    for(var i = 0;i< arr.length;i++){
        if(t.length == size){
            re.push([...t]);
            t = [];
        }
        t.push(arr[i]);
    }
    if(t.length != 0){
        re.push([...t]);
    }
    return re;
};

到了這里,關(guān)于leetcode — JavaScript專題(五):計數(shù)器 II、只允許一次函數(shù)調(diào)用、 創(chuàng)建 Hello World 函數(shù)、將對象數(shù)組轉(zhuǎn)換為矩陣、節(jié)流、分塊數(shù)組的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • verilog手撕代碼5——計數(shù)器(置位、加減、環(huán)形、扭環(huán)形、格雷碼計數(shù)器實現(xiàn))

    verilog手撕代碼5——計數(shù)器(置位、加減、環(huán)形、扭環(huán)形、格雷碼計數(shù)器實現(xiàn))

    2023.5.12 編寫一個十六進制計數(shù)器模塊,計數(shù)器輸出信號遞增每次到達0,給出指示信號 zero ,當置位信號 set 有效時,將當前輸出置為輸入的數(shù)值 set_num 。 注意 :這里zero=1和num=0是同一拍輸出的,按道理如果根據(jù)num=0,然后去輸出zero=1應該延遲一拍。所以這里考慮將number延遲一

    2024年02月07日
    瀏覽(20)
  • LR中監(jiān)控ORACLE數(shù)據(jù)庫常用計數(shù)器(如何自定義Oracle計數(shù)器)

    目錄 一、添加自定義計數(shù)器的方法 1、要創(chuàng)建自定義查詢,請執(zhí)行以下操作: 2、配置文件示例對象 二、常用自定義計數(shù)器列表 三、LR中監(jiān)控ORACLE數(shù)據(jù)庫常用計數(shù)器遇到問題及處理 1.?在安裝路徑的Mercury LoadRunnerdatmonitors找到vmon.cfg文件,打開。 2. 在vmon.cfg文件的第三行中,

    2024年02月15日
    瀏覽(35)
  • 【FPGA】Verilog:時序電路設(shè)計 | 二進制計數(shù)器 | 計數(shù)器 | 分頻器 | 時序約束

    【FPGA】Verilog:時序電路設(shè)計 | 二進制計數(shù)器 | 計數(shù)器 | 分頻器 | 時序約束

    前言: 本章內(nèi)容主要是演示Vivado下利用Verilog語言進行電路設(shè)計、仿真、綜合和下載 示例:計數(shù)器與分頻器 ? ?? 功能特性:?采用?Xilinx Artix-7 XC7A35T芯片? 配置方式:USB-JTAG/SPI Flash 高達100MHz 的內(nèi)部時鐘速度? 存儲器:2Mbit SRAM ??N25Q064A SPI Flash(樣圖舊款為N25Q032A) 通用

    2024年02月02日
    瀏覽(34)
  • 用74LS73設(shè)計四位二進制加法計數(shù)器和8421BCD加法計數(shù)器

    用74LS73設(shè)計四位二進制加法計數(shù)器和8421BCD加法計數(shù)器

    ?(1)用2片74LS73實現(xiàn)該電路,由CP端輸入單脈沖,設(shè)計并畫出4位異步二進制加法計數(shù)器電路圖。 ?(2)由CP端輸入單脈沖,測試并記錄Q1~Q4端狀態(tài)及波形。 四位二進制加法計數(shù)器狀態(tài)遷移表如下: Q 4n Q 3n Q 2n Q 1n Q 4n+1 Q 3n+1 Q 2n+1 Q 1n+1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 0 1 0

    2024年02月10日
    瀏覽(70)
  • 定時器/計數(shù)器中定時/計數(shù)初值的計算

    定時器/計數(shù)器中定時/計數(shù)初值的計算

    ???????? 寄存器TMOD是單片機的一個特殊功能寄存器,其功能是控制定時器/計數(shù)器T0、T1的工作方式。它的字節(jié)地址為89H, 不可以對它進行位操作。 ?????? ??只能進行字節(jié)操作, 即給寄存器整體賦值的方法 設(shè)置初始值 ,如 TMOD=0x01 。在上電和復位時,寄存器TMOD的初始

    2024年02月10日
    瀏覽(20)
  • Linux性能計數(shù)器

    ??性能計數(shù)器是在大多數(shù)現(xiàn)代cpu上可用的特殊硬件寄存器。這些寄存器統(tǒng)計特定類型的hw事件的數(shù)量:例如執(zhí)行的指令、遭受的cachemisses或錯誤預測的分支,而不會減慢內(nèi)核或應用程序的速度。這些寄存器還可以在事件數(shù)量達到閾值時觸發(fā)中斷——因此可以用于分析在該CP

    2024年02月11日
    瀏覽(29)
  • 實驗四 計數(shù)器

    實驗四 計數(shù)器

    五、實驗步驟與實驗結(jié)果 1、用Verilog VHDL設(shè)計D觸發(fā)器。打開QuarterII新建一個基于ALTERA的Cyclone系列FPGA芯片EP1C3T144C8N的項目保存在D:dianluecp1文件夾中,新建一個Verilog HDL文件,將附件一代碼寫入,運行無錯誤,查看My74161計數(shù)器的邏輯圖(圖1-1),重新運行,無誤后,進行“Creat sy

    2024年02月04日
    瀏覽(30)
  • verilog計數(shù)器

    verilog計數(shù)器

    (1) 深入了解計數(shù)器原理 (2) 學習使用 Verilog 實現(xiàn)同步計數(shù)器 ( 模八) 計數(shù)器的功能是記憶脈沖個數(shù),它是數(shù)字系統(tǒng)中應用最為廣泛的時序邏輯構(gòu)件。 下圖為設(shè)計 計數(shù)器從0開始每隔25_000_000個時鐘周期(0.25秒)數(shù)碼管末位顯示加一,最大值為7,7后復0值 ? ? ???????? 這

    2024年02月05日
    瀏覽(25)
  • 數(shù)電:計數(shù)器

    數(shù)電:計數(shù)器

    同步計數(shù)器和異步計數(shù)器的區(qū)別 1.同步計數(shù)器的外部時鐘端都連在一起,而異步計數(shù)器沒有 2.同步計數(shù)器在外部信號到來時觸發(fā)器同時翻轉(zhuǎn),而異步計數(shù)器的觸發(fā)器為串行連接,工作頻率較低 3.異步計數(shù)器輸出狀態(tài)的建立,要比CP慢一個傳輸時間,容易存在競爭冒險 競爭冒險

    2024年02月06日
    瀏覽(17)
  • 【時序邏輯電路】——計數(shù)器

    【時序邏輯電路】——計數(shù)器

    ????歡迎大家來學習數(shù)字電路——時序邏輯電路。 ????在這里我們會講解二進制計數(shù)器、十進制計數(shù)器和集成計數(shù)器74LS161,希望通過我們的學習會讓你更明白數(shù)字電路中的奧秘。 目錄 ??一、計數(shù)器? ??1.二進制計數(shù)器 ?(1)異步二進制加法計數(shù)器 (2)同步二進制加法

    2024年02月02日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包