leetcode刷題筆記(3)(python)

王鑫發表於2019-02-16

485 Max Consecutive Ones
題意:給出一串二進位制陣列,求陣列中最長的連續1的個數
思路:遍歷陣列判斷,然後將值新增到長度儲存陣列中,取儲存陣列最大值。本題要考慮輸入的陣列為[0],[1]的狀況。
程式碼:`class Solution(object):

def findMaxConsecutiveOnes(self, nums):
    result=[]
    sums=0
    for i in nums:
        if i==1:
            sums+=1
            result.append(sums)
        if i==0:
            result.append(sums)
            sums=0
    return max(tuple(result))

`

167 Two Sum II – Input array is sorted
題意:給出一個list,從list裡面獲取兩個數。如果兩個數合等於target則返回兩個數的位置
思路:分別從左和右開始遍歷陣列,如果所得值大於target則右邊的左移,小於target則左邊的右移
程式碼:`class Solution(object):

def twoSum(self, numbers, target):
    L,R=0,len(numbers)-1
    while R>L:
        if numbers[L]+numbers[R]==target:
            return [L+1,R+1]
        elif numbers[R]+numbers[L]>target:
            R-=1
        else:
            L+=1

1 Two Sum

題意:給出一個無序陣列,返回一個長度為2的陣列,和等於target
思路:遍歷陣列求和
程式碼:`class Solution(object):
def twoSum(self, nums, target):
    L=len(nums)-1
    for i in range(L):
        for j in range(i+1,L+1):
            if nums[i]+nums[j]==target:
                return [i,j]
    `
412. Fizz Buzz
題意:給出一個數n,返回一個從1到n的陣列,如果被三整除替換Fizz被5整除替換為Buzz,如果被15整除替換FizzBuzz
思路:先判斷是否被15整除然後再判斷是否被3,5整除,順帶提示:本題要求返回值為string,最後要講list裡面所有值轉換為string
程式碼:class Solution(object):
def fizzBuzz(self, n):
    result=range(1,n+1)
    for i in range(1,n+1):
        if i%15==0:
            result[i-1]="FizzBuzz"
        elif i%3==0:
            result[i-1]="Fizz"
        elif i%5==0:
            result[i-1]="Buzz"
    return [str(i)for i in result]

575 Distribute Candies
題意:給定一個偶數個的數列,數列裡面的數字視為不同種類的糖果,平分所有的糖果,求妹妹可以分到的最大糖果的種類數
思路:直接返回陣列總長度/2(理想情況沒有重複)與陣列裡面總共的糖果種類數中最小的一個值
程式碼:class Solution(object):

def distributeCandies(self, candies):
    return min(len(candies)/2,len(set(candies)))

相關文章