0
点赞
收藏
分享

微信扫一扫

Leetcode 刷题必须Review 十二 Lintcode(297 1334 807 767 539)

北冥有一鲲 2022-02-25 阅读 61

文章目录

297 · 寻找最大值

寻找 n 个数中的最大值。

在这里插入图片描述

 def maxNum(self, nums: List[int]) -> int:
        # write your code here
        if not nums: return
        return max(nums)

1334 · 旋转数组

给定一个数组,将数组向右移动k步,其中k为非负数。
在这里插入图片描述

def rotate(self, nums: List[int], k: int) -> List[int]:
        # Write your code here
        n = len(nums)
        if n == 1: return nums
        k_new = k % n
        return nums[-k_new: ] + nums[: n - k_new]

下面是我之前写的

def rotate(self, nums, k):
        # Write your code here
        k %= len(nums)
        return nums[-k:] + nums[:-k]

807 · 回文数 II

判断一个非负整数 n 的二进制表示是否为回文数
在这里插入图片描述

def isPalindrome(self, n):
        # Write your code here
        return str(bin(n))[2:] == str(bin(n))[-1:1:-1]

之前写的代码:

def isPalindrome(self, n):
        # Write your code here
        ss =  "{0:b}".format(n)
        start, end = 0, len(ss) - 1
        while start < end:
            if ss[start] != ss[end]: return False
            start += 1
            end -= 1
        return True
def isPalindrome(self, n):
        # Write your code here
        ss = "{0:b}".format(n)
        return ss == ss[::-1]

767 · 翻转数组

原地翻转给出的数组 nums
在这里插入图片描述

def reverseArray(self, nums):
        # write your code here
        left, right = 0, len(nums) - 1
        while left < right:
            nums[left], nums[right] = nums[right], nums[left]
            left += 1
            right -= 1
        return nums
    

539 · 移动零

给一个数组 nums 写一个函数将 0 移动到数组的最后面,非零元素保持原数组的顺序
在这里插入图片描述

官方答案:

def moveZeroes(self, nums):
        left, right = 0, 0
        while right < len(nums):
            if nums[right] != 0:
                nums[left], nums[right] = nums[right], nums[left]
                left += 1
            right += 1
举报

相关推荐

0 条评论