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

LeetCode 1997.訪問完所有房間的第一天:動態(tài)規(guī)劃(DP)——4行主要代碼(不需要什么前綴和)

這篇具有很好參考價值的文章主要介紹了LeetCode 1997.訪問完所有房間的第一天:動態(tài)規(guī)劃(DP)——4行主要代碼(不需要什么前綴和)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【LetMeFly】1997.訪問完所有房間的第一天:動態(tài)規(guī)劃(DP)——4行主要代碼(不需要什么前綴和)

力扣題目鏈接:https://leetcode.cn/problems/first-day-where-you-have-been-in-all-the-rooms/

你需要訪問?n 個房間,房間從 0n - 1 編號。同時,每一天都有一個日期編號,從 0 開始,依天數(shù)遞增。你每天都會訪問一個房間。

最開始的第 0 天,你訪問?0 號房間。給你一個長度為 n下標從 0 開始 的數(shù)組 nextVisit 。在接下來的幾天中,你訪問房間的 次序 將根據(jù)下面的 規(guī)則 決定:

  • 假設某一天,你訪問?i 號房間。
  • 如果算上本次訪問,訪問?i 號房間的次數(shù)為 奇數(shù) ,那么 第二天 需要訪問?nextVisit[i] 所指定的房間,其中 0 <= nextVisit[i] <= i 。
  • 如果算上本次訪問,訪問?i 號房間的次數(shù)為 偶數(shù) ,那么 第二天 需要訪問?(i + 1) mod n 號房間。

請返回你訪問完所有房間的第一天的日期編號。題目數(shù)據(jù)保證總是存在這樣的一天。由于答案可能很大,返回對 109 + 7 取余后的結果。

?

示例 1:

輸入:nextVisit = [0,0]
輸出:2
解釋:
- 第 0 天,你訪問房間 0 。訪問 0 號房間的總次數(shù)為 1 ,次數(shù)為奇數(shù)。
? 下一天你需要訪問房間的編號是 nextVisit[0] = 0
- 第 1 天,你訪問房間 0 。訪問 0 號房間的總次數(shù)為 2 ,次數(shù)為偶數(shù)。
? 下一天你需要訪問房間的編號是 (0 + 1) mod 2 = 1
- 第 2 天,你訪問房間 1 。這是你第一次完成訪問所有房間的那天。

示例 2:

輸入:nextVisit = [0,0,2]
輸出:6
解釋:
你每天訪問房間的次序是 [0,0,1,0,0,1,2,...] 。
第 6 天是你訪問完所有房間的第一天。

示例 3:

輸入:nextVisit = [0,1,2,0]
輸出:6
解釋:
你每天訪問房間的次序是 [0,0,1,1,2,2,3,...] 。
第 6 天是你訪問完所有房間的第一天。

?

提示:

  • n == nextVisit.length
  • 2 <= n <= 105
  • 0 <= nextVisit[i] <= i

解題方法:動態(tài)規(guī)劃(DP)

題目中明確說明了0 <= nextVisit[i] <= i,也就是說每個房間第一次訪問都會“往前回退”到nextVisit[i]而不會訪問新的房間,而第二次訪問則會訪問到“相鄰的下一個房間”。

因此我們可以使用一個firstVisit數(shù)組,其中firstVisit[i]代表房間i第一次被訪問時的天數(shù)。

那么,由房間i訪問到房間i + 1需要多久呢?

  • 首先需要花費一天訪問到nextVisit[i]這個房間(記為j
  • 接著需要花費firstVisit[i] - firstVisit[j]天再一次地由j訪問到i
  • 最后再花費一天由i訪問到i + 1

因此首次訪問到房間i + 1的天數(shù)為firstVisit[i] + 1 + (firstVisit[i] - firstVisit[j]) + 1 = 2 * firstVisit[i] - firstVisit[j] + 2。

從房間1開始往后遍歷到最后一間房間,則firstVisit.back()記為答案。

時空復雜度

  • 時間復雜度 O ( l e n ( n e x t V i s i t ) ) O(len(nextVisit)) O(len(nextVisit))
  • 空間復雜度 O ( l e n ( n e x t V i s i t ) ) O(len(nextVisit)) O(len(nextVisit))。其實不難發(fā)現(xiàn)nextVisit數(shù)組中每個值只會用到一次,因此若將firstVisit保存在nextVisit數(shù)組中則可以以 O ( 1 ) O(1) O(1)的空間復雜度實現(xiàn)。

AC代碼

C++
typedef long long ll;
const ll MOD = 1e9 + 7;
class Solution {
public:
    int firstDayBeenInAllRooms(vector<int>& nextVisit) {
        vector<ll> firstVisit(nextVisit.size());
        for (int i = 1; i < nextVisit.size(); i++) {
            firstVisit[i] = (firstVisit[i - 1] * 2 - firstVisit[nextVisit[i - 1]] + 2 + MOD) % MOD;  // 記得先加個MOD再對MOD取模,否則可能是負結果。
        }
        return firstVisit.back();
    }
};
Python
from typing import List

class Solution:
    def firstDayBeenInAllRooms(self, nextVisit: List[int]) -> int:
        firstVisit = [0] * len(nextVisit)
        for i in range(1, len(nextVisit)):
            firstVisit[i] = (firstVisit[i - 1] * 2 - firstVisit[nextVisit[i - 1]] + 2 + 1_000_000_007) % 1_000_000_007
        return firstVisit[-1]

同步發(fā)文于CSDN和我的個人博客,原創(chuàng)不易,轉載經(jīng)作者同意后請附上原文鏈接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/137119523文章來源地址http://www.zghlxwxcb.cn/news/detail-851155.html

到了這里,關于LeetCode 1997.訪問完所有房間的第一天:動態(tài)規(guī)劃(DP)——4行主要代碼(不需要什么前綴和)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • Windows網(wǎng)絡自學的第一天:創(chuàng)建線程

    Windows網(wǎng)絡自學的第一天:創(chuàng)建線程

    目錄 一、創(chuàng)建線程 CreateThread函數(shù): ?下面是示例: ?編輯 ThreadProc函數(shù)解釋: ? ? DWORD的本質(zhì)是 unsigned long? ? PVOID的本質(zhì)是 void* 二、線程的終止 1.WaitForSingleObject()函數(shù): 示例如下: 2.ExitThread()函數(shù): 示例如下: 3.TerminateThread()函數(shù): 4.CloseHandle()函數(shù): 5.正常return 0; 三、線程的

    2024年02月14日
    瀏覽(19)
  • 學習Python的第一天(下載Python環(huán)境和工具Pycharm)

    學習Python的第一天(下載Python環(huán)境和工具Pycharm)

    下載工具? PyCharm Community Edition 2023.3.4 下載環(huán)境 Python3.10.4 目錄 1.環(huán)境Python下載 1.1 Python環(huán)境變量下載網(wǎng)址:? ?1.2 下載步驟 2.工具Pycharm下載 2.1 pycharm下載網(wǎng)址? 2.2 pycharm下載步驟 Python Releases for Windows | Python.org 這里我將列舉我正在使用的版本 Python3.10.4 下載過程如果是其他版本

    2024年03月26日
    瀏覽(23)
  • Java使用LocalDate獲取某個月的第一天和最后一天日期

    以一個月為周期進行查詢時,如果用戶沒有選擇查詢的月份,我們想要默認查詢當月或上個月的數(shù)據(jù),這時,如何獲取到一個月的第一天和最后一天日期呢? 以下介紹兩種方式采用LocalDate格式日期的實現(xiàn),以及采用LocalDateTime格式日期的實現(xiàn)。直接上代碼! 輸出結果為:

    2023年04月20日
    瀏覽(23)
  • JAVA獲取本日,本日開始時間本周、本月和本年的第一天和最后一天

    JAVA獲取本日,本日開始時間本周、本月和本年的第一天和最后一天

    這個是我自己再項目中寫到的 可以借鑒 打印運行結果如下

    2024年02月13日
    瀏覽(28)
  • java 8 獲取時間日期 查詢本周、本月、本季度、本年的第一天和最后一天
  • 熱愛python的第一天:初識python,搭建python環(huán)境,運行第一個python小程序

    熱愛python的第一天:初識python,搭建python環(huán)境,運行第一個python小程序

    ?目錄 專欄導讀? 1 初始python python 概述 python的應用領域? ?應用python的公司 ?2 搭建python 開發(fā)環(huán)境 ?2.1 安裝python(以windows 系統(tǒng)為例)(1)下載安裝包? (2) 下載保存后打開文件夾點擊以管理員身份運行 ?(3)選擇自定義安裝,同時將add python3.9 to path勾上。 ?(4)測試

    2024年02月13日
    瀏覽(28)
  • 代碼隨想錄圖論 第一天 | 797.所有可能的路徑 200. 島嶼數(shù)量

    代碼隨想錄圖論 第一天 | 797.所有可能的路徑 200. 島嶼數(shù)量 一、797.所有可能的路徑 題目鏈接:https://leetcode.cn/problems/all-paths-from-source-to-target/ 思路:求從0到n-1的所有路徑,終止條件是當前節(jié)點為n-1。本題圖的結構是group[][],group[x]表示x節(jié)點所能到達的所有節(jié)點的集合,深度

    2024年02月08日
    瀏覽(31)
  • 代碼隨想錄第一天 | LeetCode704.二分查找,LeetCode 27.移除元素

    數(shù)組理論基礎要點: 數(shù)組也是數(shù)據(jù)結構的一種, 是存放在連續(xù)內(nèi)存空間上的相同類型數(shù)據(jù)的集合。 數(shù)組注意點: 數(shù)組下標都是從0開始的。 數(shù)組內(nèi)存空間的地址是連續(xù)的。 因為上述兩點, 數(shù)組的在內(nèi)存空間的地址是連續(xù)的,所以我們在刪除或者增添元素的時候,就難免要

    2024年02月08日
    瀏覽(27)
  • 關于如何生成ssh密鑰--遠程訪問的第一步

    關于如何生成ssh密鑰--遠程訪問的第一步

    第一步:從git官網(wǎng)下載windows版本的git:http://git-scm.com/downloads 第二步:寫入以下系統(tǒng)path環(huán)境變量: 第三步:進入cmd,并輸入(配置信息): 可以查看已經(jīng)配置的信息: ?第四步:執(zhí)行命令生成密鑰 進行回車確認:分別為,私鑰的保存路徑,不更改就回車;密碼,不設置就回

    2024年02月11日
    瀏覽(31)
  • 代碼隨想錄第十一天 | ??????LeetCode 20. 有效的括號、??????LeetCode 1047. 刪除字符串中的所有相鄰重復項、??????LeetCode 150. 逆波蘭表達式求

    代碼隨想錄第十一天 | ??????LeetCode 20. 有效的括號、??????LeetCode 1047. 刪除字符串中的所有相鄰重復項、??????LeetCode 150. 逆波蘭表達式求

    目錄 ??????LeetCode 20.?有效的括號 文章講解:代碼隨想錄(programmercarl.com) 視頻講解:棧的拿手好戲!| LeetCode:20. 有效的括號_嗶哩嗶哩_bilibili 思路 ??????LeetCode 1047.?刪除字符串中的所有相鄰重復項 文章講解:代碼隨想錄(programmercarl.com) 視頻講解:棧的好戲還

    2024年02月22日
    瀏覽(36)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包