2501。數組中最長的方形條紋
難度:中
主題:陣列、雜湊表、二分查找、動態規劃、排序
給你一個整數數組 nums。 nums 的子序列稱為 square streak 如果:
回傳最長方形條紋的長度(以nums為單位),如果沒有方形條紋,則回傳-1。
子序列 是一個數組,可以透過刪除一些元素或不刪除任何元素而從另一個數組派生出來,而不更改剩餘元素的順序。
範例1:
範例2:
約束:
提示:
解:
我們需要辨識 nums 陣列中最長的方形條紋。方形條紋是一個子序列,其中每個後續元素都是前一個元素的平方,並且它的長度必須至少為兩個元素。
解決方法如下:
使用集合快速找出:
迭代數組:
軌道最大長度:
最佳化:
讓我們用 PHP 實作這個解:2501。陣列中最長的方形條紋
<?php /** * @param Integer[] $nums * @return Integer */ function longestSquareStreak($nums) { ... ... ... /** * go to ./solution.php */ } // Test cases $nums1 = [4, 3, 6, 16, 8, 2]; echo longestSquareStreak($nums1) . "\n"; // Output: 3 $nums2 = [2, 3, 5, 6, 7]; echo longestSquareStreak($nums2) . "\n"; // Output: -1 ?>
此解決方案有效地找到最長的方形條紋,如果不存在有效條紋,則返回 -1。
聯絡連結
如果您發現本系列有幫助,請考慮在 GitHub 上給 存儲庫 一個星號或在您最喜歡的社交網絡上分享該帖子? 。您的支持對我來說意義重大!
如果您想要更多類似的有用內容,請隨時關注我:
以上是陣列中最長的方形條紋的詳細內容。更多資訊請關注PHP中文網其他相關文章!