leetcode刷题笔记(3)(python)

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)))

相关推荐