Arithmetic Slices

這兩天一直復習動態規劃,就想到leetcode上刷刷題,easy難度的很少,大部分都是medium和hard。本題是第一道DP類型medium難度的題目,但是用其他的方法比如暴力法也可以求解。首先來看題目描述:

A sequence of number is called arithmetic if it consists of at least three elements and if the difference between any two consecutive elements is the same.

For example, these are arithmetic sequence:

1, 3, 5, 7, 9
7, 7, 7, 7
3, -1, -5, -9

The following sequence is not arithmetic.

1, 1, 2, 5, 7

A zero-indexed array A consisting of N numbers is given. A slice of that array is any pair of integers (P, Q) such that 0 <= P < Q < N.

A slice (P, Q) of array A is called arithmetic if the sequence:
A[P], A[p + 1], ..., A[Q - 1], A[Q] is arithmetic. In particular, this means that P + 1 < Q.

The function should return the number of arithmetic slices in the array A.

Example:

A = [1, 2, 3, 4]return: 3, for 3 arithmetic slices in A: [1, 2, 3], [2, 3, 4] and [1, 2, 3, 4] itself.

解題思路:

題目描述的很明確,包含至少三個數的序列,如果差分相等,那么這個序列就叫做arithmetic sequence,在一個數組里統計有多少個滿足條件的序列(切片)。首先試試暴力法。我們固定一個最小長度為3的區間(i, j),如果差分相等,我們就右移j,一直到數組的末尾,滿足條件的話計數加一。需要注意的是如果區間(i, j-1)是arithmetic slice,那么我們末尾加上一個j,如果A[j] - A[j-1] 等于之前的差分值,那么區間(i, j)也屬于arithmetic slice,我們要避免每次判斷都要計算前面的差分。代碼如下:

class Solution(object):def numberOfArithmeticSlices(self, A):res = 0for i in range(len(A)-2):d = A[i+1] - A[i]for j in range(i+2, len(A)):if A[j] - A[j-1] == d:res += 1else:breakreturn res

?當然我們可以用dp算法,令一維dp[i]表示以i結尾的區間有多少個arithmetic ?slice,新添加的元素和前面元素的差,如果等于之前的差值,那么就讓dp[i]加一。代碼如下:

class Solution(object):def numberOfArithmeticSlices(self, A):dp = [0 for i in range(len(A))]res = 0for i in range(2, len(A)):if A[i] - A[i-1] == A[i-1] - A[i-2]:dp[i] = 1 + dp[i-1]res += dp[i]return res

我們可以優化空間復雜度,因為dp的更新只跟上一個元素有關,因此我們用一個變量空間來代替原來的數組。

class Solution(object):def numberOfArithmeticSlices(self, A):dp = 0res = 0for i in range(2, len(A)):if A[i] - A[i-1] == A[i-1] - A[i-2]:dp += 1res += dpelse:dp = 0return res

?



轉載于:https://www.cnblogs.com/nicotine1026/p/7459989.html

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

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

相關文章

在Data Lake Analytics中使用視圖

在Data Lake Analytics中使用視圖 1. 概述 在Data Lake Analytics&#xff08;以下簡稱DLA&#xff09;中使用視圖&#xff08;VIEW&#xff09;功能&#xff0c;可以大大簡化對于重復SQL&#xff0c;特別是較為復雜的SQL語句的編寫和維護。目前DLA中還不支持SQL視圖的物化。在…

C# 實例詳解委托之Func、Action、delegate(精品)

概述委托是.NET編程的精髓之一&#xff0c;在日常編程中經常用到&#xff0c;在C#中實現委托主要有Func、Action、delegate三種方式&#xff0c;本節主要就這三種委托的用法通過實例展開講解。Func用法解析【Func】&#xff1a;Func是帶返回值的委托&#xff1a;原型函數如下(以…

Django05-2:路由分發/命名空間/偽靜態/虛擬環境/django版本區別

路由分發 補充&#xff1a;每一個應用可以有獨立的templates模板文件夾&#xff0c;static靜態文件加&#xff0c;urls.py 總路由 #方法一from app01 import urls as app01_urls from app02 import urls as app02_urlsurlpatterns [url(r^publisher_list/, views.publisher_…

Word中查找替換軟回車鍵和回車鍵

在Word中使用搜索功能搜索“^p”組合字符串可以查找文檔中的所有換行符&#xff08;回車鍵&#xff09;&#xff0c;使用“^l”&#xff08;英文輸入狀態下shift6與小寫字符L的組合&#xff09;可以搜索所有的軟回車符。使用替換功能就可以搜索替換二者。轉載于:https://www.cn…

minecraft服務器_如何使用Minecraft領域設置簡單的無壓力Minecraft服務器

minecraft服務器There are a lot of ways to go about hosting a Minecraft game but it’s tough to beat the simplicity of buying a server directly from Mojang, the company behind Minecraft (and now it even comes with a free 30 day trial!) Read on as we show yo…

自動化測試基礎篇--Selenium瀏覽器操作

Selenium 主要提供的是操作頁面上各種元素的方法&#xff0c;但它也提供了操作瀏覽器本身的方法&#xff0c;比如瀏覽器的大小以及瀏覽器后退、前進按鈕等。一、控制瀏覽器窗口大小有時候我們希望能以某種瀏覽器尺寸打開&#xff0c;讓訪問的頁面在這種尺寸下運行。例如可以將瀏…

Sublime text3配置xdebug調試記錄

第一次配置遇到的問題記錄&#xff1b; 問題&#xff1a;配置php.ini的時候xdebug.remote_port 9001剛開始我一直配置9000端口沖突,然后一切弄好了訪問瀏覽器就一直在轉圈無法訪問&#xff1b; 現在開始配置&#xff1a; 1.打開sublime 輸入install Package如下顯示在按回車&a…

.NET Conf China 2022 今天(12.4) 日程一覽

點擊藍字關注我們.NET Conf China 2022 誠邀您的加入立即掃碼預約加入.NET年度盛宴&#xff01;&#xff01;CSDN 直播https://bbs.csdn.net/forums/DotNET?typeId20680 思否直播https://segmentfault.com/area/dotnetconf-2022主論壇分論壇前端專場-A會場出品人&#xff1a;張…

移動web開發適配rem

移動的meta標簽 <meta name"viewport" content"widthdevice-width, initial-scale1,user-scalableno"> 常見移動web適配方法&#xff1a; 1.定高&#xff0c;百分比布局 2.flex布局 3.media媒體查詢 rem&#xff08;font size of the root element…

Django06:視圖層/上傳文件/request 方法補充/FBV與CBV

三板斧 HttpResponse, 返回字符串類型render, 返回html頁面&#xff0c;而且在返回給瀏覽器之前&#xff0c;可以給html文件傳值redirect 重定向 總結&#xff1a;視圖函數必須返回一個HttpResponse對象&#xff0c; 查看源代碼能發現。 JsonResponse對象 json用途&#x…

《Java核心技術 卷Ⅱ 高級特性(原書第10版)》一2.4.6 為克隆使用序列化

2.4.6 為克隆使用序列化 序列化機制有一種很有趣的用法&#xff1a;即提供了一種克隆對象的簡便途徑&#xff0c;只要對應的類是可序列化的即可。其做法很簡單&#xff1a;直接將對象序列化到輸出流中&#xff0c;然后將其讀回。這樣產生的新對象是對現有對象的一個深拷貝&…

談談ASP.NET Core過濾器和中間件的區別

什么是中間件中間件Middleware是所有請求都會執行的,適合用在權限校驗,一些公用字段處理,例如分頁信息獲取.asp.net core 提供了IApplicationBuilder接口來讓把中間件注冊到asp.net的管道請求當中去&#xff0c;中間件是一個典型的AOP應用。下面是一個微軟官方的一個中間件管道…

11 個 Nginx 參數性能優化工作

工作上&#xff0c;需要配置 Nginx&#xff0c;要投入生產使用&#xff0c;做了一點優化工作&#xff0c;加上以前也經常折騰 Nginx&#xff0c;故記下一些優化工作。 優化 Nginx 進程數量 配置參數如下&#xff1a; worker_processes 1; # 指定 Nginx 要開啟的進程數&#xff…

如何在Windows 8中將舊控制面板添加到Metro Start屏幕

By default there is no way to easily access the old Control Panel in Windows 8, in order to get to it you have to go through the new Metro Control Panel or switch to Explorer. Here’s how to create your own tile for it. 默認情況下&#xff0c;無法輕松訪問Wi…

vue子父組件間傳值

父組件傳值給子組件 props方式   父組件上1處聲明傳遞的鍵并賦值&#xff0c;子組件2處使用props接收一下這個鍵就可以使用了。在父組件改變這個值的話子組件跟著一起響應&#xff0c;子組件改變這個值的話父組件不改變。次為響應式&#xff0c;但是也僅限于父組件的值變化子…

Django07:模板語法/標簽/inclusion_tag/模版的繼承

模板語法傳值 列表&#xff1a;l[a,b,c] 集合&#xff1a;se{‘a’,yy,ss} 元組&#xff1a;t(111,222,333) render(request.index,html,locals()) 語法規律 {{}}:變量相關 {%%}:邏輯相關 {{func}} 會自動加括號執行&#xff0c;但不支持帶參數&#xff1b; 帶參數會不…

紅象云騰發布新一代PB級高速大數據平臺產品

ZD至頂網服務器頻道 03月23日 新聞消息&#xff1a;在3月19日舉辦的China Hadoop Summit&#xff08;中國Hadoop技術峰會&#xff09;上&#xff0c;中國Hadoop大數據廠商紅象云騰與OpenPOWER基金會共同發布紅象云騰的新一代大數據產品,幫助企業高速處理PB規模數據。 此次發布…

個人筆記 Vue.js, Framework7, and Cordova / PhoneGap Template with Babel, Webpack and Hot Reloading...

為什么80%的碼農都做不了架構師&#xff1f;>>> 模板創建項目 模板地址 更新package.json中的dependencies依賴到最新版本 當新建一個項目的時候&#xff0c;從其他項目的package.json里面copy一份dependencies過來。 但因為是新項目&#xff0c;我們想用各個依賴包…

dotnet-exec 0.12.0 released

dotnet-exec 0.12.0 releasedIntrodotnet-exec 是一個 C# 程序的小工具&#xff0c;可以用來運行一些簡單的 C# 程序而無需創建項目文件&#xff0c;讓 C# 像 python/nodejs 一樣簡單&#xff0c;而且可以自定義項目的入口方法&#xff0c;支持但不限于 Main 方法。Install/Upd…

美國用戶現在可以下載其所有Apple帳戶數據,這是操作方法

Starting today, Apple is allowing all US users to download a copy of every last bit of their data from the company. 從今天開始&#xff0c;Apple允許所有美國用戶從該公司下載其數據的最后一部分的副本。 This feature has been available for EU users since May, th…