跳躍游戲[中等]

優質博文:IT-BLOG-CN

一、題目

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

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

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

1 <= nums.length <= 104
0 <= nums[i] <= 105

二、代碼

貪心: 提取題目重要信息可知:【1】當前下表i + 值nums[i] 是否可以到達下一個坐標i + 1,當然之前的i + nums[i] >= 5的時候,表示前5個都可達;【2】只有滿足1的條件時,如果可達 > 最大的下標,則直接返回true否則,不斷遍歷獲取最大值,直到大于最大下標返回true或者遍歷結束返回false

class Solution {public boolean canJump(int[] nums) {if (nums == null || nums.length == 0) {return false;}int len = nums.length;int pathlen = 0;// 如果可達路徑大于等于下表表示可達,則判斷是否大于數組的長度-1;for (int i = 0; i < len; i++) {if (pathlen >= i) {pathlen = Math.max(pathlen, i + nums[i]);if (pathlen >= len - 1) {return true;}}}return false;}
}

時間復雜度: O(n),其中n為數組的大小。只需要訪問nums數組一遍,共n個位置。
空間復雜度: O(1),不需要額外的空間開銷。

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

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

相關文章

阿里入局鴻蒙!鴻蒙原生應用再添兩員新丁

今日HarmonyOS微博稱&#xff0c;阿里釘釘、螞蟻集團旗下的移動開發平臺mPaaS與華為達成合作&#xff0c;宣布啟動鴻蒙原生應用的開發&#xff01;相關應用將以原生方式適配#HarmonyOS NEXT#系統。 #HarmonyOS#市場或迎來爆發式增長&#xff01; 阿里釘釘 阿里釘釘與華為達成合…

Android 匿名內存深入分析

Android 匿名內存解析 有了binder機制為什么還需要匿名內存來實現IPC呢&#xff1f;我覺得很大的原因就是binder傳輸是有大小限制的&#xff0c;不說應用層的限制。在驅動中binder的傳輸大小被限制在了4M&#xff0c;分享一張圖片可能就超過了這個限制。匿名內存的主要解決思路…

黑馬點評-10實現用戶點贊和點贊排行榜功能

用戶點贊功能 如果用戶只要點贊一次就對數據庫中blog表中的liked字段的值加1就會導致一個用戶無限點贊 PutMapping("/like/{id}") public Result likeBlog(PathVariable("id") Long id) {// 修改點贊數量,update tb_blog set liked liked 1 where id …

編譯器核心技術概覽

編譯技術是一門龐大的學科&#xff0c;我們無法對其做完善的講解。但不同用途的編譯器或編譯技術的難度可能相差很大&#xff0c;對知識的掌握要求也會相差很多。如果你要實現諸如 C、JavaScript 這類通用用途語言&#xff08;general purpose language&#xff09;&#xff0c…

buck降壓電路

一、Buck電路的拓撲結構 Buck是直流轉直流的降壓電路,下面是拓撲結構,作為硬件工程師,這個最好是能夠記下來,了然于胸。 為啥要記下來,自然是因為這個電路太基礎了,并且誰都會用到,更重要的一點,面試可能會考。。。 上圖是個異步buck,同步buck就是將里面的二極管換成M…

3D火山圖繪制教程

一邊學習&#xff0c;一邊總結&#xff0c;一邊分享&#xff01; 本期教程內容 **注&#xff1a;**本教程詳細內容 Volcano3D繪制3D火山圖 一、前言 火山圖是做差異分析中最常用到的圖形&#xff0c;在前面的推文中&#xff0c;我們也推出了好幾期火山圖的繪制教程&#xff0…

Android——資源IDnonFinalResIds和“Attribute value must be constant”錯誤

一、異常描述 通過資源ID引用資源提示錯誤 Attribute value must be constant 二、解決方案 在根目錄下的文件 gradle.properties 中添加如下配置&#xff0c;然后Sync Project android.nonFinalResIdsfalse 三、問題原因 android.nonFinalResIds 是Android開發中一個用于解…

此處不允許使用特性namespace

1.DOCTYPE 后面改成 mapper 2.PUBLIC一行中的Config改為Mapper 3.將下一行config變為小寫的mapper <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.or…

交叉編譯安裝時報錯 ./install.sh: 15: ./install.sh: Bad substitution

報錯信息截圖如下&#xff1a; 解決方法 vim install.sh #!/bin/sh -e 修改為 !/bin/bash -e重新執行 sudo ./install.sh 成功運行

【Java并發】聊聊線程池原理以及實際應用

線程其實對于操作系統來說是寶貴的資源&#xff0c;java層面的線程其實本質還是依賴于操作系統內核的線程進行處理任務&#xff0c;如果頻繁的創建、使用、銷毀線程&#xff0c;那么勢必會非常浪費資源以及性能不高&#xff0c;所以池化技術&#xff08;數據庫連接池、線程池&a…

暢談Linux在小型微型企業中的應用

在這篇文章里我們討論和暢談一下linux系統在小微型企業中的應用&#xff0c;為什么會寫這篇文章呢&#xff1f;因為在平時的工作中&#xff0c;認識的一些做小微型企業的朋友&#xff0c;他們經常找我咨詢或是去解決一些平時工作中的IT相關的問題&#xff0c;那么小微型企業中的…

相同結構體不同類型轉換

緣由&#xff1a; 最近開發上遇到一個問題&#xff0c;通過grpcgateway 處理后的int64&uint64類型數據均轉換成了字符串類型&#xff0c;本身服務于前端&#xff0c;沒有任何問題。但是 項目部署現場后&#xff0c;發現需要兩套環境&#xff0c;那么就出現一個問題&#x…

2022 年十大 JavaScript 框架

2022 年十大 Web 應用開發 JavaScript 框架。 React.js jQuery Express Angular Vue.js Angular.js Svelte Next.js Ember.js Meteor React.js React.js 于 2013 年由 Meta(Facebook 前身) 推出&#xff0c;是一款開源的、免費的 JavaScript 庫。React.js 被用于開…

C++中的map和set的使用

C中的map詳解 關聯式容器鍵值對樹形結構的關聯式容器set的使用1. set的模板參數列表2. set的構造3. set的迭代器4. set的容量5. set修改操作6. set的使用舉例 map1. map的簡介2. map的模板參數說明3. map的構造4. map的迭代器5. map的容量與元素訪問6. map的元素修改 multimap和…

Linux vim操作教程(vim 基操、vim替換和查找、 vim改變文本顏色、判斷和循環語句)

vim 基操 vim 是一個強大的文本編輯器,常用于在終端環境下編輯文件。下面是一些常用的 vim 操作: 打開文件:在終端中輸入 vim 文件名 來打開一個文件,如果文件不存在,則會創建一個新文件。 模式切換: 按下 i 進入插入模式,在該模式下可以輸入和編輯文本。按下 Esc 鍵返…

python單例模式

單例模式是一種創建型設計模式&#xff0c;它保證一個類僅有一個實例&#xff0c;并提供一個全局訪問點。 在 Python 中&#xff0c;可以使用以下幾種方式來創建單例模式&#xff1a; 使用 __new__ 方法 在 Python 中&#xff0c; __new__ 方法是一個類方法&#xff0c;它在…

msvcp120.dll丟失是什么意思,哪個修復方法最簡單

在計算機使用過程中&#xff0c;我們經常會遇到一些錯誤提示&#xff0c;其中之一就是“找不到msvcp120.dll”。這個錯誤通常發生在運行某些程序或游戲時&#xff0c;它會導致程序無法正常啟動或運行。那么&#xff0c;這個錯誤提示到底是什么意思呢&#xff1f;為了解決這個問…

深入了解Java8新特性-日期時間API_LocalDate類

閱讀建議 嗨&#xff0c;伙計&#xff01;刷到這篇文章咱們就是有緣人&#xff0c;在閱讀這篇文章前我有一些建議&#xff1a; 本篇文章大概12000多字&#xff0c;預計閱讀時間長需要10分鐘。本篇文章的實戰性、理論性較強&#xff0c;是一篇質量分數較高的技術干貨文章&…

【iOS】數據持久化(一)之Plist文件、Preference(NSUserDefaults類)

目錄 什么是Plist文件&#xff1f;plist可以存儲哪些數據類型plist文件數據的讀取與存儲 Perference&#xff08;NSUserDefaults&#xff09;使用方法registerDefaults: 方法的使用 什么是Plist文件&#xff1f; Plist文件&#xff08;屬性列表&#xff09;是將某些特定的類&a…

python運行hhblits二進制命令的包裝器類

hhblits 是 HMM-HMM&#xff08;Hidden Markov Model to Hidden Markov Model&#xff09;比對方法的一部分&#xff0c;也是 HMMER 軟件套件中的工具之一。與 hhsearch 類似&#xff0c;hhblits 也用于進行高效的蛋白質序列比對&#xff0c;特別擅長于檢測遠緣同源性。 hh-su…