力扣網編程55題:跳躍游戲之逆向思維

一. 簡介

前面一篇文章使用貪心算法解決 力扣網55題:跳躍游戲,文章如下:

力扣網編程55題:跳躍游戲之貪心算法-CSDN博客

二.?力扣網編程55題:跳躍游戲之逆向思維

給你一個非負整數數組 nums ,你最初位于數組的 第一個下標 。數組中的每個元素代表你在該位置可以跳躍的最大長度。
判斷你是否能夠到達最后一個下標,如果可以,返回 true ;否則,返回 false 。

示例 1:
輸入:nums = [2,3,1,1,4]
輸出:true
解釋:可以先跳 1 步,從下標 0 到達下標 1, 然后再從下標 1 跳 3 步到達最后一個下標。

示例 2:
輸入:nums = [3,2,1,0,4]
輸出:false
解釋:無論怎樣,總會到達下標為 3 的位置。但該下標的最大跳躍長度是 0 , 所以永遠不可能到達最后一個下標。

逆向思維分析:

采用逆向思維,從終點倒推判斷哪些位置可以到達終點。

從最后一個位置開始往前遍歷,維護一個變量 last_pos:表示當前能夠跳到到終點的最近位置。

如果 index+ nums[index] >= last_pos,就更新 last_pos為當前位置 index(因為index是新的可到達終點的最小下標)。

遍歷完數組,最后判斷 last_pos是否為0;

解題思路二:(從后往前逆向思維)

1. 定義一個變量last_pos:初始化為numsSize-1,表示當前能夠跳到終點的最近位置。

2. 遍歷數組,從倒數第二個元素開始,判斷當前位置+跳躍的長度(即數組元素值)是否大于等于 last_pos,如果滿足,則將last_pos = i(因為 index是新的可到達終點的最小下標);

3. 數組遍歷結束,最后判斷last_pos是否為0,如果是則說明數組從首元素可以跳躍到終點,否則不行;

C語言實現如下:

//逆向思維
//從數組末尾開始,從后往前遍歷
bool canJump(int* nums, int numsSize) {//last_pos表示能到達終點位置的最近位置//初始時,終點位置是可到達的int index;int last_pos = numsSize-1;for(index = numsSize-1; index >= 0, index--) {//關鍵判斷://如果從當前位置index出發,跳躍nums[index]長度的距離能夠到達或超過last_pos//說明可以從index位置跳躍到last_pos的位置,進而到達終點//因為更新last_pos為index,因為現在index成為了新的可到達終點的最前位置if((index + nums[index] >= last_pos)) {last_pos = index;}}if(!index){return true;}else{return false;}
}

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

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

相關文章

蒼穹外賣--day12數據統計-Excel報表

1.工作臺1.1實現思路工作臺是系統運營的數據看板,并提供快捷操作入口,可以有效提高商家的工作效率。工作臺展示的數據:①今日數據②訂單管理③菜品總覽④套餐總覽⑤訂單信息名詞解釋:①營業額:已經完成訂單的總金額②有…

鴻蒙應用開發:從網絡獲取數據

一、網絡狀態概述上述任一指標的變化均可視為網絡狀態的改變 二、獲取網絡信息 創建網絡對象 //創建網絡對象 //?表示可傳可不傳 connection.createNetConnection(netSpecifier?:NetSpecifier,timeout?:number):NetConnection;獲取默認激活網絡及其能力 //獲取默認激活網絡 …

探索開源虛擬 Excel 函數模塊:Python 中的 Excel 功能利器

在數據處理和分析的領域中,Excel 一直是一款備受青睞的工具,它提供了豐富多樣的函數,幫助用戶高效地完成各種數據操作。而現在,我(董翔)開發一個基于 Python 的虛擬 Excel 函數模塊,它將 Excel …

開源 vGPU 方案 HAMi: corememory 隔離測試

本文主要對開源的 vGPU 方案 HAMi 的 GPU Core&Memory 隔離功能進行測試。 省流: HAMi vGPU 方案提供的 Core&Memory 隔離基本符合預期: Core 隔離:Pod 能使用的算力會圍繞設定值波動,但是一段時間內平均下來和申請的 g…

openstack安裝并初始化

openstack安裝并初始化openStack 概述OpenStack 起源什么是Openstackopenstack優勢使用本地倉庫離線安裝系統基本環境設置為系統設置本地倉庫創建openstack-train的倉庫更新系統安裝部署工具一鍵安裝設置橋接網絡通過 Dashboard 體驗 OpenStack 功能創建云主機創建網絡(1)用adm…

解決 Cannot create Swift scratch context

場景復現 Xcode 控制臺輸出: Cannot create Swift scratch context (couldnt create a Clang Importer)Analysis 分析 發生了什么? 在調試 Swift 代碼或在 LLDB 里執行 po/expr 命令時,LLDB 需要為表達式臨時創建一份 “Swift scratch co…

機械時代的計算

1、機械計算起源 最近在想平衡三進制的除法,想看看那么大牛是怎么做的,資料很少,但還是有的,有但是看不懂,也不知靠不靠譜,后面跟著實踐了能行,下面就看看Balanced Ternary Arithmetic&#xff…

相機光學(四十八)——漸暈

1.什么是漸暈 漸暈,又稱“光衰減”,在光學和攝影中很常見,簡單來說就是與中心相比,圖像角落變暗。漸暈要么是由光學引起的,要么是在后期處理中故意添加的,目的是將觀看者的視線從角落的干擾物吸引到圖像的中…

LabVIEW多通道阻抗測試儀

LabVIEW集成 Keysight 數字萬用表與 NI 矩陣開關卡,構建多通道阻抗測試系統,實現設備連接電纜的多芯阻抗自動化測試,涵蓋數據采集、分析、記錄與顯示功能,適用于高精度阻抗檢測場景,展現LabVIEW在儀器控制與自動化測試…

MySQL的5.0和8.0版本區別

目錄 1、MySQL版本-- 》5版本 1.1、InnoDB存儲引擎 1.2、存儲過程和觸發器 1.3、視圖 1.4、增強的查詢優化器 1.5、增強的索引支持 1.6、外鍵支持 1.7、分區表和分布式查詢 2、MySQL版本-- 》8版本 2.1、性能 2.2、字符編碼改變 2.3、持久化保存 2.4、隱藏索引和降…

python實現簡單的地圖繪制與標記20250705

用python語言繪制顯示范圍不大于上海地區的地圖 您的代碼實現了一個 上海武館地理信息系統,主要功能是通過可視化地圖展示上海各區的傳統武術館信息。 通過和deeps對話一晚上實現的,我就是描述修改 高德的api key我搞了一會,平時很少接觸密…

Qt開發:QListWidget的介紹和使用

文章目錄 一、QListWidget的簡介二、QListWidget的基本用法三、QListWidget的數據操作2.1 插入數據2.2 查找數據2.3 選項設置 四、QListWidget的信號與槽 一、QListWidget的簡介 QListWidget 是 Qt 框架中用于顯示和操作條目列表的控件,它是 QListView 的一個子類&a…

React Native 親切的組件們(函數式組件/class組件)和陌生的樣式

寫多了taro, 看見react native中的組件好親切啊,幾乎一模一樣。 一、函數式組件 — 常用 1)無狀態,每次刷新都是生成一個新的狀態 2)基于狀態變化的管理 3)簡潔,代碼少,易于服用 import Reac…

Spring boot之身份驗證和訪問控制

本文筆記跟隨于遇見狂神說老師的視頻 一.SpringSecurity(安全) 1.相關概念 在web開發中,安全第一位,有簡單的方法,比如:攔截器,過濾器 也有安全框架,比如:SpringSecu…

C#使用開源框架NetronLight繪制流程圖

之前使用MindFusion.Diagramming繪制流程圖確認很方便,只能試用版,如果長期使用,需要收費。 C#使用MindFusion.Diagramming框架繪制流程圖(2):流程圖示例_c# 畫流程圖控件-CSDN博客 這里找一個簡易開源框架NetronLight,GIT下載地…

支持向量機(SVM)在腦部MRI分類中的深入應用與實現

?? 博主簡介:CSDN博客專家、CSDN平臺優質創作者,高級開發工程師,數學專業,10年以上C/C++, C#, Java等多種編程語言開發經驗,擁有高級工程師證書;擅長C/C++、C#等開發語言,熟悉Java常用開發技術,能熟練應用常用數據庫SQL server,Oracle,mysql,postgresql等進行開發應用…

AtCoder AT_abc413_c [ABC413C] Large Queue 題解

題目大意 有一個初始為空的序列 A A A, Q Q Q 次操作分為兩類: 第一類:將 c c c 個 x x x 放到 A A A 的末尾。第二類:將前 k k k 個數的和輸出并移除它們。 思路 這是一個求和問題,想到的第一個思路是前綴和…

「源力覺醒 創作者計劃」_文心大模型開源:開啟 AI 新時代的大門

在人工智能的浩瀚星空中,大模型技術宛如一顆璀璨的巨星,照亮了無數行業前行的道路。自誕生以來,大模型憑借其強大的語言理解與生成能力,引發了全球范圍內的技術變革與創新浪潮。百度宣布于 6 月 30 日開源文心大模型 4.5 系列&…

Git 怎么判斷是否沖突?

📌 [Q&A] Git 怎么判斷是否沖突? Git 使用的是三路合并算法(Three-way Merge),它比較: 共同祖先提交(base) 當前分支的改動(ours) 被合并分支的改動&am…

在sf=0.1時測試fireducks、duckdb、polars的tpch

首先,從https://github.1git.de/fireducks-dev/polars-tpch下載源代碼包,將其解壓縮到/par/fire目錄。 然后進入此目錄,運行 SCALE_FACTOR0.1 ./run-fireducks.sh,腳本會首先安裝所需的包,編譯tpch的數據生成器&#x…