力扣題目 - 935. 騎士撥號器

題目

還需要你前往力扣官網查看詳細的題目要求 地址

1.象棋騎士有一個獨特的移動方式,它可以垂直移動兩個方格,水平移動一個方格,或者水平移動兩個方格,垂直移動一個方格(兩者都形成一個 L 的形狀)2.象棋騎士可能的移動方式如下圖所示:3.我們有一個象棋騎士和一個電話墊,如下所示,騎士只能站在一個數字單元格上(即藍色單元格)4.給定一個整數 n,返回我們可以撥多少個長度為 n 的不同電話號碼。5.你可以將騎士放置在任何數字單元格上,然后你應該執行 n - 1 次移動來獲得長度為 n 的號碼。所有的跳躍應該是有效的騎士跳躍。6.因為答案可能很大,所以輸出答案 取模 1e9 + 7 (結果 % 1e9+7)

思路

  • 這題的思路用 js動態規劃來解決 js動態規劃建議去看視頻了解
  • 先算出個個點位可以移動的位置 ,比如 0 可以移動到4和6。 1 可以移動到6和8.以此類推得到 validJump 這個二維數組
  • 當n為1時, 可以移動0步 得到第一行,從0-9開始移動的最大不同號碼為數組(也就是不移動) dp = [1,1,1,1,1,1,1,1,1] = new Array(10).fill(1)
  • 當n為2時, 可以移動1步 得到第二行,從0-9開始移動得最大不同號碼為數組 next = [2,2,2,2,3,0,3,2,2,2]
  • 解析第二行(規律還不明顯) next[0] = 2 第一步從0移動,可以到4和6, 那么next[0]也可以是 next[0] = dp[4]+dp[6]
  • 這時你需要 dp = next
  • 當n為3時, 可以移動2步 得到第三行,從0-9開始移動得最大不同號碼為數組 next = [6,5,4,5,6,0,6,5,4,5]
  • 解析第三行(這時規律出來) next[0]= 6 第一步從0移動,可以得到 4和6。那么在 4 時,剩下一步,不就和第二行 從4開始移動一樣嗎
    同理在 6 時,也和第二行從6開始移動一樣 得到結果 next[0] = dp(4) + dp(6)
  • next[j] = validJump[j].reduce(…省略)
  • 簡單來說除了第一行之外, 其余行的都由(上一行某些數字的相加) validJump[j].reduce((acc,curr)=>acc+dp(curr))

代碼

//     0  1  2  3  4  5  6  7  8  9   這是0-9數字// 0   1  1  1  1  1  1  1  1  1  1
// 1   2  2  2  2  3  0  3  2  2  2
// 2
// 3
// 4
// n-1
// 這是步數(n-1)
let validJump = [[4, 6],[6, 8],[7, 9],[4, 8],[0, 3, 9],[],[0, 1, 7],[2, 6],[1, 3],[2, 4],];const MOD = 1e9 + 7;var knightDialer = function (n) {if (n < 0) return 0;if (n === 1) return 10;// 第一行let dp = new Array(10).fill(1);for (let i = 1; i < n; i++) {let next = [];for (let j = 0; j < 10; j++) {let res = validJump[j];next[j] =res.reduce((acc, curr) => {return acc + dp[curr];}, 0) % MOD;}dp = next;}return dp.reduce((a, b) => a + b) % MOD;};

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/62739.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/62739.shtml
英文地址,請注明出處:http://en.pswp.cn/web/62739.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

傳輸層7——TCP擁塞控制(重點!!!)

目錄 一、認識擁塞控制 1、什么叫做擁塞&#xff1f; 2、擁塞的特點 3、流量控制 VS 擁塞控制 二、TCP如何防止擁塞&#xff1f; 1、慢開始 2、擁塞避免 3、3重復確認 和 快重傳算法 4、快恢復算法 5、總結 三、主動隊列管理AQM 1、技術背景 2、AQM思 想和實現策略…

PostgreSQL/PostGIS中提升空間查詢(分析)性能(效率)的一些方法

目錄 1. 使用適當的索引 1.1 索引類型 1.2 分析查詢計劃 1.3 覆蓋索引 1.4 復合索引 1.5 維護索引 1.6 刪除不必要的索引 1.7 使用適當的數據類型 2. 建立分區表 2.1 分區表的基本概念 2.2 創建分區表的步驟 2.3 空間數據的分區 2.4 分區表優點 3. 簡化幾何形狀 …

輪播(css+js)

目錄 1.實現效果 2.基礎代碼演示 2.1js代碼 2.1css樣式 2.3實現效果 3.實現點擊切換 3.1給button添加點擊事件 3.2效果圖如下 3.3發現問題 3.3.1不循環 3.3.2循環 1.實現效果 2.基礎代碼演示 2.1js代碼 <div class"out-box"><div class"tes…

簡單的JavaWeb開發示例

以下是一個簡單的JavaWeb開發示例&#xff0c;包含一個使用Servlet和JSP實現的簡單網頁計數器功能&#xff0c;展示了基本的JavaWeb項目結構以及相關代碼邏輯。 1. 項目搭建與環境準備 開發工具&#xff1a;可以使用Eclipse、IntelliJ IDEA等集成開發環境&#xff0c;這里以I…

fastadmin框架同時使用 阿里云oss和阿里云點播

背景 項目的實際需求中既要用到阿里云oss產品又用到阿里云點播系統&#xff0c;實現完美的統一。設置兩個地址downUrl&#xff0c;thirdCode。分別代表阿里云oss上傳路徑和阿里云點播系統vId。 實現 默認框架你已經集成好阿里云oss集成工作&#xff0c;前端html頁面實現 <…

優秀的3d建模是數據可視化的視覺核心1

增強視覺效果&#xff1a;3D建模通過創建三維立體圖像&#xff0c;為觀眾提供了更為真實和直觀的視覺體驗。相比于傳統的二維圖表和圖形&#xff0c;3D模型能夠更準確地展示復雜數據之間的空間關系&#xff0c;使數據可視化大屏上的信息更加生動和易于理解。 提升信息傳達效率&…

flink sink kafka的事務提交現象猜想

現象 查看flink源碼時 sink kafka有事務提交機制&#xff0c;查看源碼發現是使用兩階段提交策略&#xff0c;而事務提交是checkpoint完成后才執行&#xff0c;那么如果checkpoint設置間隔時間比較長時&#xff0c;事務未提交之前&#xff0c;后端應該消費不到數據&#xff0c…

leetcode 3224. 使差值相等的最少數組改動次數

題目鏈接&#xff1a;3224. 使差值相等的最少數組改動次數 題目&#xff1a; 給你一個長度為 n 的整數數組 nums &#xff0c;n 是偶數 &#xff0c;同時給你一個整數 k 。 你可以對數組進行一些操作。每次操作中&#xff0c;你可以將數組中任一元素替換為 0 到 k 之間的任一…

Y3編輯器文檔4:觸發器1(對話、裝備、特效、行為樹、排行榜、不同步問題)

文章目錄 一、觸發器簡介1.1 觸發器界面1.2 ECA語句編輯及快捷鍵1.3 參數設置1.4 變量設置1.5 實體觸發器1.6 函數庫與觸發器復用 二、觸發器的多層結構2.1 子觸發器&#xff08;在游戲內對新的事件進行注冊&#xff09;2.2 觸發器變量作用域2.3 復合條件2.4 循環2.5 計時器2.6…

前端WebSocket應用——聊天實時通信的基本配置

使用 WebSocket 實現實時通信的 Vue 應用 前言1. WebSocketService 類 1.1 類屬性1.2 構造函數和連接初始化1.3 WebSocket 連接1.4 事件處理方法1.5 發送和關閉 WebSocket 消息1.6 狀態查詢與回調注冊1.7 完整代碼 2. 在 Vue 組件中使用 WebSocketService 2.1 定義 WebSocket …

【開源】A065—基于SpringBoot的庫存管理系統的設計與實現

&#x1f64a;作者簡介&#xff1a;在校研究生&#xff0c;擁有計算機專業的研究生開發團隊&#xff0c;分享技術代碼幫助學生學習&#xff0c;獨立完成自己的網站項目。 代碼可以查看項目鏈接獲取??&#xff0c;記得注明來意哦~&#x1f339; 贈送計算機畢業設計600個選題ex…

基于python實現自動化的驗證碼識別:探索與實踐

基于python實現自動化的驗證碼識別&#xff1a;探索與實踐 一、驗證碼的類型及特點&#xff08;一&#xff09;圖像驗證碼&#xff08;二&#xff09;短信驗證碼&#xff08;三&#xff09;語音驗證碼 二、驗證碼識別的方法*&#xff08;一&#xff09;傳統圖像處理方法&#x…

Vue vs. React:兩大前端框架的深度對比與分析(一)

前言 在當今快速發展的前端領域中&#xff0c;Vue和React作為兩個備受矚目的前端框架&#xff0c;已經成為許多開發者的首選。這兩個框架憑借其出色的設計和強大的功能&#xff0c;在構建現代化、高效性能的Web應用方面扮演著重要角色。 Vue和React都以其獨特的特點吸引了眾多開…

windows安裝使用conda

在Windows系統上安裝和使用Conda的詳細步驟如下&#xff1a; 一、下載Conda安裝包 訪問Conda的官方網站Anaconda | The Operating System for AI&#xff0c;點擊“Downloads”按鈕。在下載頁面&#xff0c;選擇適合您系統的安裝包。通常&#xff0c;對于Windows系統&#xf…

websocket 服務 pinia 全局配置

websocket 方法類 // stores/webSocketStore.ts import { defineStore } from "pinia";interface WebSocketStoreState {ws: WebSocket | null; // WebSocket 實例callbacks: ((message: string) > void)[]; // 消息回調函數列表connected: boolean; // 連接狀態…

Ariba Procurement: Administration_Cloud Basics

# SAP Ariba Procurement: Administration_Cloud Basics 認識Ariba Cloud SAP Ariba Procurement 是一個云計算平臺… The Ariba Cloud 平臺需要簡單理解的概念: Datacenter數據中心:SAP Ariba在世界各地有許多數據中心。這些數據中心構成了Ariba云的基本物理基礎設施。 …

vulnhub靶場【shenron】--1

前言 靶機&#xff1a;shenron-1 攻擊&#xff1a;kali 都采用虛擬機&#xff0c;網卡為橋接模式 主機發現 使用arp-scan -l或netdiscover -r 192.168.1.1/24掃描 信息收集 使用nmap掃描端口 網站信息探測 查看頁面&#xff0c;發現是apache2的默認界面&#xff0c;查看…

等保2.0數據庫測評之SQL server數據庫測評

一、SQL server數據庫介紹 SQL server美國Microsoft公司推出的一種關系型數據庫系統。SQL Server是一個可擴展的、高性能的、為分布式客戶機/服務器計算所設計的數據庫管理系統。 本次安裝環境為Windows10專業版操作系統&#xff0c;數據庫版本為Microsoft SQL Server 2019 (…

無人機之報警器的工作原理!

一、電量監測技術 電量監測是無人機電量指示和報警功能的基礎。通過實時監測無人機的電池電量&#xff0c;系統能夠準確判斷電池的剩余使用時間&#xff0c;并在電量不足時發出報警。電量監測技術通常包括以下幾個方面&#xff1a; 電壓檢測&#xff1a;無人機電池內部通常配…

【pyspark學習從入門到精通23】機器學習庫_6

目錄 分割連續變量 標準化連續變量 分類 分割連續變量 我們經常處理高度非線性的連續特征&#xff0c;而且只用一個系數很難擬合到我們的模型中。 在這種情況下&#xff0c;可能很難只通過一個系數來解釋這樣一個特征與目標之間的關系。有時&#xff0c;將值劃分到離散的桶中…