Leecode刷題C語言之跳躍游戲②

執行結果:通過

執行用時和內存消耗如下:

?

?

?

int jump(int* nums, int numsSize) {int position = numsSize - 1;int steps = 0;while (position > 0) {for (int i = 0; i < position; i++) {if (i + nums[i] >= position) {position = i;steps++;break;}}}return steps;
}

解題思路:

這段代碼是用來解決“跳躍游戲 II”(Jump Game II)的問題,目標是最小化跳躍次數,從數組的起始位置跳到最后一個位置。代碼的思路可以分解為以下幾個步驟:

  1. 初始化變量
    • position:設置為數組的最后一個位置(numsSize - 1),表示當前需要到達的目標位置。
    • steps:設置為0,用來記錄跳躍的次數。
  2. 逆向思維
    • 代碼采用了逆向思維,從數組的最后一個位置開始向前推算,直到到達數組的第一個位置。這種方法相較于正向推算,可以減少不必要的比較,因為從后向前更容易確定哪些位置可以一步跳到當前的目標位置。
  3. 尋找能夠跳到目標位置的最遠起點
    • 使用一個while循環,條件是position > 0,意味著只要目標位置不是數組的起始位置,就繼續尋找。
    • while循環內部,使用一個for循環遍歷當前目標位置之前的所有位置(從0到position - 1)。
    • for循環內部,檢查每個位置i是否能通過一次跳躍到達或超過當前的目標位置position(即i + nums[i] >= position)。
    • 一旦找到這樣的位置i,更新目標位置positioni(即新的目標位置變為當前能夠跳到之前目標位置的最遠起點),跳躍次數steps增加1,然后跳出for循環。
  4. 返回結果
    • while循環結束時,說明已經從最后一個位置逆向推算到了第一個位置,此時steps記錄的就是最小跳躍次數。
    • 返回steps作為結果。

總結來說,這段代碼通過逆向遍歷數組,從后向前尋找每個目標位置的最遠可達起點,從而計算出從數組起始位置跳到最后一個位置所需的最小跳躍次數。

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

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

相關文章

《多線程基礎之條件變量》

【條件變量導讀】條件變量是多線程中比較靈活而且容易出錯的線程同步手段&#xff0c;比如&#xff1a;虛假喚醒、為啥條件變量要和互斥鎖結合使用&#xff1f;windows和linux雙平臺下&#xff0c;初始化、等待條件變量的api一樣嗎&#xff1f; 本文將分別為您介紹條件變量在w…

【信息系統項目管理師-選擇真題】2009上半年綜合知識答案和詳解

更多內容請見: 備考信息系統項目管理師-專欄介紹和目錄 文章目錄 【第1題】【第2~3題】【第4題】【第5題】【第6題】【第7題】【第8題】【第9題】【第10題】【第11題】【第12題】【第13題】【第14題】【第15題】【第16題】【第17題】【第18題】【第19題】【第20題】【第21題】…

消息隊列篇--通信協議篇--TCP和UDP(3次握手和4次揮手,與Socket和webSocket的概念區別等)

1、TCP和UDP概述 TCP&#xff08;傳輸控制協議&#xff0c;Transmission Control Protocol&#xff09;和UDP&#xff08;用戶數據報協議&#xff0c;User Datagram Protocol&#xff09;都算是最底層的通信協議&#xff0c;它們位于OSI模型的傳輸層。*傳輸層的主要職責是確保…

mysql_store_result的概念和使用案例

mysql_store_result() 是 MySQL C API 中的一個函數&#xff0c;用于檢索一個完整的結果集到一個客戶端。當執行一個查詢&#xff08;通常是 SELECT 查詢&#xff09;并希望處理所有返回的數據時&#xff0c;可以使用此函數。 概念 mysql_store_result() 函數的原型如下&…

React Router v6配置路由守衛

首先準備好以下頁面 登錄頁&#xff1a;用戶可以在此頁面登錄。 受保護頁&#xff1a;只有登錄的用戶可以訪問&#xff0c;否則會重定向到登錄頁。 公共頁面&#xff1a;不需要鑒權&#xff0c;任何人都可以訪問。 1. 安裝依賴 首先&#xff0c;我們需要安裝 react-router-do…

打破傳統束縛:領略 Web3 獨特魅力

在互聯網發展的歷程中&#xff0c;我們見證了Web1和Web2的變遷。Web1是靜態信息的展示平臺&#xff0c;Web2則引領了社交互動和內容創作的繁榮&#xff0c;而如今&#xff0c;Web3作為新時代的互聯網架構&#xff0c;正逐漸展現出其獨特的魅力&#xff0c;帶領我們走向一個更加…

[論文總結] 深度學習在農業領域應用論文筆記14

當下&#xff0c;深度學習在農業領域的研究熱度持續攀升&#xff0c;相關論文發表量呈現出迅猛增長的態勢。但繁榮背后&#xff0c;質量卻不盡人意。相當一部分論文內容空洞無物&#xff0c;缺乏能夠落地轉化的實際價值&#xff0c;“湊數” 的痕跡十分明顯。在農業信息化領域的…

Linux 學習筆記__Day3

十八、設置虛擬機的靜態IP 1、VMware的三種網絡模式 安裝VMware Workstation Pro之后&#xff0c;會在Windows系統中虛擬出兩個虛擬網卡&#xff0c;如下&#xff1a; VMware提供了三種網絡模式&#xff0c;分別是&#xff1a;橋接模式&#xff08;Bridged&#xff09;、NAT…

QT+mysql+python 效果:

# This Python file uses the following encoding: utf-8 import sysfrom PySide6.QtWidgets import QApplication, QWidget,QMessageBox from PySide6.QtGui import QStandardItemModel, QStandardItem # 導入需要的類# Important: # 你需要通過以下指令把 form.ui轉為ui…

筆記本跑大模型嘗試

1&#xff0c;筆記本電腦資源 我是一臺聯想筆記本電腦&#xff0c;基本配置如下&#xff1a; CPU&#xff1a;12th Gen Intel(R) Core(TM) i7-1255U 1.70 GHz (12核心&#xff0c;2個P核和8個E核&#xff0c;共計10個核心) 顯卡&#xff1a;NVIDIA GeForce MX550 內存&am…

C語言實現掃雷游戲(有展開一片和標記雷的功能)

實現準備 分2個.c源文件和1個.h頭文件去寫代碼 test.c 對掃雷游戲進行測試game.c 掃雷游戲功能的實現game.h 掃雷游戲功能的聲明 掃雷游戲 1.test.c對掃雷游戲進行測試 首先我們要先把玩游戲的框架寫出來&#xff0c;然后一步一步去完成其功能 跟著下面的代碼的節奏走一步一步…

GitHub 倉庫的 Archived 功能詳解:中英雙語

GitHub 倉庫的 Archived 功能詳解 一、什么是 GitHub 倉庫的 “Archived” 功能&#xff1f; 在 GitHub 上&#xff0c;“Archived” 是一個專門用于標記倉庫狀態的功能。當倉庫被歸檔后&#xff0c;它變為只讀模式&#xff0c;所有的功能如提交代碼、創建 issue 和 pull req…

基礎IO(2)

基礎IO&#xff08;2&#xff09; 理解“?切皆?件” ?先&#xff0c;在windows中是?件的東西&#xff0c;它們在linux中也是?件&#xff1b;其次?些在windows中不是?件的東西&#xff0c;?如進程、磁盤、顯?器、鍵盤這樣硬件設備也被抽象成了?件&#xff0c;你可以使…

Transformation,Animation and Viewing

4 Transformation&#xff0c;Animation and Viewing 聲明&#xff1a;該代碼來自&#xff1a;Computer Graphics Through OpenGL From Theory to Experiments&#xff0c;僅用作學習參考 4.1 Modeling Transformations 平移、縮放和旋轉&#xff0c;即 OpenGL 的建模轉換&…

Deepseek的RL算法GRPO解讀

在本文中&#xff0c;我們將深入探討Deepseek采用的策略優化方法GRPO&#xff0c;并順帶介紹一些強化學習&#xff08;Reinforcement Learning, RL&#xff09;的基礎知識&#xff0c;包括PPO等關鍵概念。 策略函數&#xff08;policy&#xff09; 在強化學習中&#xff0c; a…

【python】python基于機器學習與數據分析的二手手機特性關聯與分類預測(源碼+數據集)【獨一無二】

&#x1f449;博__主&#x1f448;&#xff1a;米碼收割機 &#x1f449;技__能&#x1f448;&#xff1a;C/Python語言 &#x1f449;專__注&#x1f448;&#xff1a;專注主流機器人、人工智能等相關領域的開發、測試技術。 python基于機器學習與數據分析的二手手機特性關聯與…

手撕Diffusion系列 - 第十一期 - lora微調 - 基于Stable Diffusion(代碼)

手撕Diffusion系列 - 第十一期 - lora微調 - 基于Stable Diffusion&#xff08;代碼&#xff09; 目錄 手撕Diffusion系列 - 第十一期 - lora微調 - 基于Stable Diffusion&#xff08;代碼&#xff09;Stable Diffusion 原理圖Stable Diffusion的原理解釋Stable Diffusion 和Di…

前端【8】HTML+CSS+javascript實戰項目----實現一個簡單的待辦事項列表 (To-Do List)

目錄 一、功能需求 二、 HTML 三、CSS 四、js 1、綁定事件與初始設置 2.、綁定事項 &#xff08;1&#xff09;添加操作&#xff1a; &#xff08;2&#xff09;完成操作 &#xff08;3&#xff09;刪除操作 &#xff08;4&#xff09;修改操作 3、完整js代碼 總結…

C++標準線程庫實現優雅退出的方式

目錄 1.通過設置共享退出標記 2.使用std::jthread創建線程 3.定義消息類型的方式 4.注意事項 1.通過設置共享退出標記 定義一個退出變量bool stop false; 表示線程是否應該停止。在主線程中設置標記stoptrue,然后join一直等待&#xff0c;然后線程循環檢測到stop是否為tru…

Java學習教程,從入門到精通,JDBC插入記錄語法及案例(104)

JDBC插入記錄語法及案例 一、JDBC插入記錄語法 在JDBC中&#xff0c;插入記錄主要通過執行SQL的INSERT語句來實現。其基本語法如下&#xff1a; INSERT INTO 表名 (列1, 列2, ..., 列n) VALUES (值1, 值2, ..., 值n);表名&#xff1a;需要插入記錄的表的名稱。列1, 列2, …,…