Leetcode 3448. Count Substrings Divisible By Last Digit

  • Leetcode 3448. Count Substrings Divisible By Last Digit
    • 1. 解題思路
    • 2. 代碼實現
  • 題目鏈接:3448. Count Substrings Divisible By Last Digit

1. 解題思路

這一題的話我們走的是一個累積數組的思路。

首先,我們使用一個cache數組記錄下任意段數字對 1 1 1 9 9 9的余數,即任意cache[i][j] = int(s[:i]) % j

然后,我們考察任意位置上所有前序數組對 1 1 1 9 9 9的余數,即 ∑ j = 0 i s j i ≡ m o d ( k ) \sum\limits_{j=0}^{i}s_{ji} \equiv mod(k) j=0i?sji?mod(k),而要求上述問題,我們可以反向求累積數組 ∑ j = 0 i ( s i ? s j × 1 0 i ? j ) ≡ m o d ( k ) \sum\limits_{j=0}^{i}(s_{i} -s_{j} \times 10^{i-j}) \equiv mod(k) j=0i?(si??sj?×10i?j)mod(k)

因此,我們可以用累計數組進行求解。

2. 代碼實現

給出python代碼實現如下:

class Solution:def countSubstrings(self, s: str) -> int:n = len(s)cache = [[0 for _ in range(10)] for _ in range(n)]mod = [0 for _ in range(10)]for i, ch in enumerate(s):digit = int(ch)for j in range(1, 10):mod[j] = (mod[j] * 10 + digit) % jcache[i][j] = mod[j]def update_cnt(cnt):ans = [[0 for j in range(i)] for i in range(10)]for i in range(1, 10):for j in range(i):r = (j * 10) % ians[i][r] += cnt[i][j]return ansans = 0cnt = [[0 for j in range(i)] for i in range(10)]for i in range(1, 10):cnt[i][0] += 1for i, ch in enumerate(s):cnt = update_cnt(cnt)digit = int(ch) if digit != 0:ans += cnt[digit][cache[i][digit]]for j in range(1, 10):cnt[j][cache[i][j]] += 1return ans

提交代碼評測得到:耗時9031ms,占用內存38.3MB。

需要注意的是,事實上上述代碼還可以進一步優化,因為至少1,2,5幾個數是必然滿足只要以對應的數字結尾就一定可以滿足條件,因此,我們事實上是可以對上述算法進行優化的,不過這里就不過多展開了,有興趣的讀者可以自行嘗試一下。

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

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

相關文章

三維模擬-機械臂自翻車

機械仿真 前言效果圖后續 前言 最近在研究Unity機械仿真,用Unity實現其運動學仿真展示的功能,發現一個好用的插件“MGS-Machinery-master”,完美的解決了Unity關節定義缺少液壓缸伸縮關節功能,內置了多個場景,講真的&…

USB子系統學習(四)用戶態下使用libusb讀取鼠標數據

文章目錄 1、聲明2、HID協議2.1、描述符2.2、鼠標數據格式 3、應用程序4、編譯應用程序5、測試6、其它 1、聲明 本文是在學習韋東山《驅動大全》USB子系統時,為梳理知識點和自己回看而記錄,全部內容高度復制粘貼。 韋老師的《驅動大全》:商…

2月9日QT

優化登錄框: 當用戶點擊取消按鈕,彈出問題對話框,詢問是否要確定退出登錄,并提供兩個按鈕,yes|No,如果用戶點擊的Yes,則關閉對話框,如果用戶點擊的No,則繼續登錄 當用戶…

安卓路由與aop 以及 Router-api

安卓路由(Android Router)和AOP(面向切面編程)是兩個在Android開發中常用的概念。下面我將詳細講解這兩個概念及其在Android開發中的應用。 一、安卓路由 安卓路由主要用于在應用程序中管理不同組件之間的導航和通信。它可以簡化…

大模型賦能網絡安全整體應用流程概述

一、四個階段概述 安全大模型的應用大致可以分為四個階段: 階段一主要基于開源基礎模型訓練安全垂直領域的模型; 階段二主要基于階段一訓練出來的安全大模型開展推理優化、蒸餾等工序,從而打造出不同安全場景的專家模型,比如數據安全領域、安全運營領域、調用郵件識別領…

nexus部署及配置https訪問

1. 使用docker-compose部署nexus docker-compose-nexus.yml version: "3" services:nexus:container_name: my-nexusimage: sonatype/nexus3:3.67.1hostname: my-nexusnetwork_mode: hostports:- 8081:8081deploy:resources:limits:cpus: 4memory: 8192Mreservations…

史上最快 Python版本 Python 3.13 安裝教程

Python3.13安裝和配置 一、Python的下載 1. 網盤下載地址 (下載速度比較快,推薦) Python3.13.0下載:Python3.13.0下載地址(windows)3.13.0下載地址(windows) 點擊下面的下載鏈接&#xff0c…

Docker從入門到精通- 容器化技術全解析

第一章:Docker 入門 一、什么是 Docker? Docker 就像一個超級厲害的 “打包神器”。它能幫咱們把應用程序和它運行所需要的東東都整整齊齊地打包到一起,形成一個獨立的小盒子,這個小盒子在 Docker 里叫容器。以前呢,…

ProcessingP5js數據可視化

折線圖繪制程序設計說明 可以讀取表格數據,并轉換成折線圖,條形圖和餅狀圖,并設計了銜接動畫效果 1. 功能概述 本程序使用 Processing 讀取 CSV 文件數據,并繪制帶有坐標軸和數據點的折線圖。橫坐標(X 軸&#xff09…

使用云計算,企業的數據監管合規問題如何解決?

使用云計算,企業的數據監管合規問題如何解決? 在當今這個信息化、數字化的時代,數據無疑成為了企業最寶貴的資產之一。隨著云計算的普及,企業將大量數據存儲在云端,不僅提升了效率,也帶來了更多靈活性。然…

AWS Fargate

AWS Fargate 是一個由 Amazon Web Services (AWS) 提供的無服務器容器計算引擎。它使開發者能夠運行容器化應用程序,而無需管理底層的服務器或虛擬機。簡而言之,AWS Fargate 讓你只需關注應用的容器本身,而不需要管理運行容器的基礎設施&…

vue3+vite+eslint|prettier+elementplus+國際化+axios封裝+pinia

文章目錄 vue3 vite 創建項目如果創建項目選了 eslint prettier從零教你使用 eslint prettier第一步,下載eslint第二步,創建eslint配置文件,并下載好其他插件第三步:安裝 prettier安裝后配置 eslint (2025/2/7 補充) 第四步&am…

vLLM V1 重磅升級:核心架構全面革新

本文主要是 翻譯簡化個人評讀,原文請參考:vLLM V1: A Major Upgrade to vLLM’s Core Architecture vLLM V1 開發背景 2025年1月27日,vLLM 開發團隊推出 vLLM V1 alpha 版本,這是對框架核心架構的里程碑式升級。基于過去一年半的…

Jupyter Notebook自動保存失敗等問題的解決

一、未生成配置文件 需要在命令行中,執行下面的命令自動生成配置文件 jupyter notebook --generate-config 執行后會在 C:\Users\用戶名\.jupyter目錄中生成文件 jupyter_notebook_config.py 二、在網頁端打開Jupyter Notebook后文件保存失敗;運行代碼…

使用wpa_supplicant和wpa_cli 掃描wifi熱點及配網

一:簡要說明 交叉編譯wpa_supplicant工具后會有wpa_supplicant和wpa_cli兩個程序生產,如果知道需要連接的wifi熱點及密碼的話不需要遍歷及查詢所有wifi熱點的名字及信號強度等信息的話,使用wpa_supplicant即可,否則還需要使用wpa_…

Flink (十七) :Table API SQL (五) 時區

Flink 為日期和時間提供了豐富的數據類型, 包括 DATE, TIME, TIMESTAMP, TIMESTAMP_LTZ, INTERVAL YEAR TO MONTH, INTERVAL DAY TO SECOND 。 Flink 支持在 session (會話)級別設置…

【真一鍵部署腳本】——一鍵部署deepseek

目錄 deepseek一鍵部署腳本說明 0 必要前提 1 使用方法 1.1 使用默認安裝配置 1.1 .1 使用其它ds模型 1.2 使用自定義安裝 2 附錄:deepseek模型手動下載 3 腳本下載地址 deepseek一鍵部署腳本說明 0 必要前提 linux環境 python>3.10 1 使用方法 1.1 …

5.2Internet及其作用

5.2.1Internet概述 Internet稱為互聯網,又稱英特網,始于1969年的美國ARPANET(阿帕網),是全球性的網絡。 互連網指的是兩個或多個不同類型的網絡通過路由器等網絡設備連接起來,形成一個更大的網絡結構。互連…

“圖像識別分割算法:解鎖視覺智能的關鍵技術

嘿,各位朋友!今天咱們來聊聊圖像識別分割算法。這可是計算機視覺領域里特別厲害的一項技術,簡單來說,它能讓機器“看懂”圖像中的不同部分,并把它們精準地分出來。想象一下,機器不僅能識別出圖里有貓還是狗…

AJAX項目——數據管理平臺

黑馬程序員視頻地址: 黑馬程序員——數據管理平臺 前言 功能: 1.登錄和權限判斷 2.查看文章內容列表(篩選,分頁) 3.編輯文章(數據回顯) 4.刪除文章 5.發布文章(圖片上傳&#xff0…