《九日集训》第十五轮 (第五讲) 排序

舒服加 2022-04-01 23:18:37

学习内容:https://blog.csdn.net/WhereIsHeroFrom/article/details/120875926

 912. 排序数组

class Solution:
    def sortArray(self, nums: List[int]) -> List[int]:
        nums.sort()
        return nums

169. 多数元素

class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        n = len(nums)//2
        max_num = max(nums)
        count = [0] * (max_num + 1)
        for num in nums:
            count[num] += 1
        if (count.index(max(count))) >= n:
            return(count.index(max(count)))

217. 存在重复元素

class Solution:
    def containsDuplicate(self, nums: List[int]) -> bool:
        nums.sort()
        flag = 0
        for i in range(len(nums)-1):
            if nums[i] == nums[i+1]:
                flag = 1
                break
        if flag == 1:
            return True
        else:
            return False

164. 最大间距

class Solution:
    def maximumGap(self, nums: List[int]) -> int:
        if len(nums)<2:
            return 0
        else:
            nums.sort()
            prev = float('inf')
            res = 0
            for i in nums:
                if res<(i-prev):
                    res = i-prev
                prev = i
            return res
        

905. 按奇偶排序数组

class Solution(object):
    def sortArrayByParity(self, A):
        return ([x for x in A if x % 2 == 0] +
                [x for x in A if x % 2 == 1])

976. Largest Perimeter Triangle

class Solution:
    def largestPerimeter(self, A: List[int]) -> int:
        A.sort(reverse=True)
        return next((x+y+z for x, y, z in zip(A, A[1:], A[2:]) if x<y+z), 0)

539. 最小时间差

def getMinutes(t: str) -> int:
    return ((ord(t[0]) - ord('0')) * 10 + ord(t[1]) - ord('0')) * 60 + (ord(t[3]) - ord('0')) * 10 + ord(t[4]) - ord('0')

class Solution:
    def findMinDifference(self, timePoints: List[str]) -> int:
        timePoints.sort()
        ans = float('inf')
        t0Minutes = getMinutes(timePoints[0])
        preMinutes = t0Minutes
        for i in range(1, len(timePoints)):
            minutes = getMinutes(timePoints[i])
            ans = min(ans, minutes - preMinutes)  # 相邻时间的时间差
            preMinutes = minutes
        ans = min(ans, t0Minutes + 1440 - preMinutes)  # 首尾时间的时间差
        return ans

881. Boats to Save People

class Solution:
    def numRescueBoats(self, people: List[int], limit: int) -> int:
        ans = 0
        people.sort()
        light, heavy = 0, len(people) - 1
        while light <= heavy:
            if people[light] + people[heavy] > limit:
                heavy -= 1
            else:
                light += 1
                heavy -= 1
            ans += 1
        return ans

 

...全文
46 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

64,199

社区成员

发帖
与我相关
我的任务
社区描述
学习「 算法 」的捷径就是 「 题海战略 」,社区由「 夜深人静写算法 」作者创建,三年ACM经验,校集训队队长,亚洲区域赛金牌,世界总决赛选手。社区提供系统的训练,答疑解惑,面试经验,大厂内推等机会
社区管理员
  • 英雄哪里出来
  • 芝麻粒儿
  • Amy卜bo皮
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

QQ群:480072171

英雄算法交流 8 群

 

试试用AI创作助手写篇文章吧