leetcode 面试题57 - II. 和为s的连续正数序列
https://leetcode-cn.com/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/submissions/
class Solution:def findContinuousSequence(self, target: int) -> List[List[int]]:# 對于一個數target,輸出所有和為 target 的連續正整數序列ans=[]for i in range(1,target):L=[]sum=0for j in range(i,target):L.append(j)sum+=jif(sum==target):ans.append(L)breakelif sum>target:breakreturn ans模擬大法好
只是效率低
我寫題目的習慣都是能解就先解出來,就算是很低級的解法也沒關系。只有解出來之后才去思考更優化的解法,不然寫半天一個解法都沒想出來,挫敗感很強。
下面嘗試更多解法
two points
仔細分析一下,序列是連續的,并且很像滑動窗口,自然地想到了two points的思路
并且i的區間肯定是只取到target/2+1的整數,因為任何一個數的一半加上大于它一半的數可能會超過它了
再嘗試優化一下,發現并不用每次都切片,只需要記錄i,j和切片區間的和就行了
class Solution:def findContinuousSequence(self, target: int) -> List[List[int]]:# 對于一個數target,輸出所有和為 target 的連續正整數序列ans=[]i,j=1,1L=[i for i in range(target)]s=1while i<target//2+1:if(s==target):ans.append(L[i:j+1])s-=ii+=1elif s>target:s-=ii+=1elif s<target:j+=1s+=jreturn ans又高了一點
想不到更好的方法了,貼一下題解
https://leetcode-cn.com/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/solution/mian-shi-ti-57-ii-he-wei-sde-lian-xu-zheng-shu-x-2/
和別人的題解,講得很清楚
https://leetcode-cn.com/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/solution/xiang-jie-hua-dong-chuang-kou-fa-qiu-gen-fa-jian-g/
總結
以上是生活随笔為你收集整理的leetcode 面试题57 - II. 和为s的连续正数序列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于vTESTstudio的域控制器测试
- 下一篇: 众创美业微信引流系统使用说明