当前位置: 首页 > article >正文

LeetCode笔记:Weekly Contest 342

  • LeetCode笔记:Weekly Contest 342
    • 1. 题目一
      • 1. 解题思路
      • 2. 代码实现
    • 2. 题目二
      • 1. 解题思路
      • 2. 代码实现
    • 3. 题目三
      • 1. 解题思路
      • 2. 代码实现
    • 4. 题目四
      • 1. 解题思路
      • 2. 代码实现
  • 比赛链接:https://leetcode.com/contest/weekly-contest-342

1. 题目一

给出题目一的试题链接如下:

  • 2651. Calculate Delayed Arrival Time

1. 解题思路

这一题没啥好说的,就是相加之后对24进行一下求余即可。

2. 代码实现

给出python代码实现如下:

class Solution:
    def findDelayedArrivalTime(self, arrivalTime: int, delayedTime: int) -> int:
        return (arrivalTime + delayedTime) % 24

提交代码评测得到:耗时29ms,占用内存13.9MB。

2. 题目二

给出题目二的试题链接如下:

  • 2652. Sum Multiples

1. 解题思路

这一题其实可以用容斥原理加等差数列求和公式求得更快速一些,不过这里我就偷了个懒,直接做了个循环拉倒了……

2. 代码实现

给出python代码实现如下:

class Solution:
    def sumOfMultiples(self, n: int) -> int:
        res = 0
        for i in range(1, n+1):
            if i % 3 == 0 or i % 5 == 0 or i % 7 == 0:
                res += i
        return res

提交代码评测得到:耗时66ms,占用内存13.9MB。

3. 题目三

给出题目三的试题链接如下:

  • 2653. Sliding Subarray Beauty

1. 解题思路

这题我们就是用一个滑动窗口进行扫描即可,在滑动窗口当中,我们仅按大小排序保留负数即可。

2. 代码实现

给出python代码实现如下:

class Solution:
    def getSubarrayBeauty(self, nums: List[int], k: int, x: int) -> List[int]:
        s = []
        res = []
        n = len(nums)
        for i in range(k):
            if nums[i] < 0:
                bisect.insort(s, nums[i])
        if len(s) >= x:
            res.append(s[x-1])
        else:
            res.append(0)
        for j in range(k, n):
            # print(nums, n, j)
            if nums[j] < 0:
                bisect.insort(s, nums[j])
            if nums[j-k] < 0:
                s.pop(bisect.bisect_left(s, nums[j-k]))
            if len(s) >= x:
                res.append(s[x-1])
            else:
                res.append(0)
        return res

提交代码评测得到:耗时3749ms,占用内存27.7MB。

4. 题目四

给出题目四的试题链接如下:

  • 2654. Minimum Number of Operations to Make All Array Elements Equal to 1

1. 解题思路

这题挺伤心的,因为一开始没想出来,后来看了答案简直吐血……

这道题很显然的要想全变为1,那么必然要经过一系列变换之后使得相邻两数没有公因子,或者说互质,此时就可以将其中一个变为1,此时其他的数必然也能变为1。

当然,如果原数组当中本就有1的话就更方便了。

不过,我当时没想到的是,要想最快速的是一个数变为1,必然是一系列针对连续数的操作,这个可以用反证法快速说明的。

因此,我们用一个二重循环事实上就能够快速地得到我们的答案了。

2. 代码实现

给出python代码实现如下:

class Solution:
    def minOperations(self, nums: List[int]) -> int:
        if 1 in nums:
            return len(nums) - nums.count(1)
        n = len(nums)
        res = n + 1
        for i in range(n-1):
            d, cnt = nums[i], 0
            for j in range(i+1, n):
                d = gcd(d, nums[j])
                cnt += 1
                if d == 1:
                    break
            if d == 1:
                res = min(res, cnt)
        return -1 if res == n+1 else n + res - 1

提交代码评测得到:耗时51ms,占用内存16.2MB。


http://www.kler.cn/a/15527.html

相关文章:

  • Restful API接⼝简介及为什么要进⾏接⼝压测
  • Failed to create a temp file - Jenkins 无法创建任务
  • 【数据库】mysql数据库迁移前应如何备份数据?
  • 定时器简介
  • 基于Java的旅游类小程序开发与优化
  • 录的视频怎么消除杂音?从录制到后期的杂音消除攻略
  • 快手智能处理与编码算法产品化之路
  • 7-4 多态练习-计算面积
  • 如何实现U盘低格?这样操作快速搞定!
  • [python][vpython]用vpython实现小球砸弹簧代码
  • 十四、51单片机之AD转换
  • 第五章 资源包使用
  • 代码随想录算法训练营第58天|739. 每日温度,496.下一个更大元素 I
  • MongoDB (一) Java使用MongoDB[CURD]
  • python@可变对象和不可变对象@按值传递和引用传递@python运行可视化工具
  • Leetcode力扣秋招刷题路-0852
  • 优思学院|精益生产为企业带来革命性转变的效益
  • Linux centos重装yum
  • GCM与CCM的的规格和加解密过程
  • 网页爬虫之WebPack模块化解密(JS逆向)
  • 学习笔记-主成分分析法
  • SpringBoot+Vue3实现登录验证码功能
  • CentOS计划任务的用法
  • 学系统集成项目管理工程师(中项)系列13a_人力资源管理(上)
  • Whistle安装与使用
  • javaEE+mysql学生竞赛管理系统