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

LeetCode笔记:Weekly Contest 360

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

0. 吐槽

这次的题目真的是,一言难尽,难倒是不难,就是各种特殊情况,边界条件,得想的很清楚,然后代码写起来就很丑,完全就是一坨一坨的,思路上感觉没啥难度,实现上各种复杂……

然后一看出题的公司,呵,果然又是国内公司,真的是,感觉每次出现这种思路不复杂但是各种边界条件坑的一逼的题目大都是国内公司出的,做完感觉除了浪费时间之外完全学不到东西,鸡肋的一逼……

国内公司这个出题的风格,真的是完全不明白他们出题的目的是什么……

1. 题目一

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

  • 2833. Furthest Point From Origin

1. 解题思路

这一题没啥难度,左右符号的数目相减取绝对值然后加上下划线符号的数目即可得到可行走的最远距离。

2. 代码实现

给出python代码实现如下:

class Solution:def furthestDistanceFromOrigin(self, moves: str) -> int:cnt = Counter(moves)return abs(cnt["L"] - cnt["R"]) + cnt["_"]

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

2. 题目二

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

  • 2834. Find the Minimum Possible Sum of a Beautiful Array

1. 解题思路

这一题其实和上周的题目2829差不多(LeetCode笔记:Weekly Contest 359),也都是从小的数开始取,然后block与其pair的数,剩下不足的从target开始依次补足即可。

然后,知道取法之后,我们就可以优化一下直接用求和公式给出结果了。

2. 代码实现

给出python代码实现如下:

class Solution:def minimumPossibleSum(self, n: int, target: int) -> int:if n <= target // 2:return n * (n+1) // 2else:m = target // 2return m * (m+1) // 2 + (n-m) * (target+target+n-m-1) // 2

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

3. 题目三

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

  • 2835. Minimum Operations to Form Subsequence With Target Sum

1. 解题思路

这一题就是一个贪婪算法的思路,我们首先可以对给出的nums进行统计,获得所有 2 n 2^n 2n的个数。

然后,我们将target数用 2 n 2^n 2n的求和表示出来,即将其用二进制表示出来,然后依次看各个位上的数字能否在nums里面找到即可。

而这里说的贪婪算法的思路其实就是我们从小到大依次看target的各个二进制组成:

  1. 如果这个值直接在nums中存在,那么直接取用;
  2. 如果这个值可以用一系列比它的二进制数拼出来,那么就用这些更小的数来拼成这个值;
  3. 如果上述两者都不存在,那么就找到当前nums中比这个值大的最小的数,然后将其拆分到这个值的程度,并更新nums;
  4. 如果nums不存在比这个值大的数,那么返回-1即可。

2. 代码实现

给出python代码实现如下:

class Solution:def minOperations(self, nums: List[int], target: int) -> int:cnt = [0 for _ in range(32)]for num in nums:idx = 0while num != 1:num = num // 2idx += 1cnt[idx] += 1def is_possible(idx):need = 1for i in range(idx, -1, -1):if cnt[i] >= need:return Trueneed -= cnt[i]need *= 2return Falseres = 0idx = 0while target != 0:if target % 2 != 0:if is_possible(idx):need = 1for i in range(idx, -1, -1):if cnt[i] >= need:cnt[i] -= needbreakneed -= cnt[i]cnt[i] = 0need *= 2else:if all(cnt[i] == 0 for i in range(idx+1, 32)):return -1i = idx + 1while cnt[i] == 0:i += 1cnt[i] -= 1for j in range(idx, i):cnt[j] += 1res += 1delta = (target % 2) * pow(2, idx)target = target // 2   idx += 1return res

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

4. 题目四

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

  • 2836. Maximize Value of Function in a Ball Passing Game

1. 解题思路

这一题其实也不复杂,就是实现上麻烦一点。

本质上来说,这道题就是找到所有完整路径,然后统计一下其中长度为 k k k的所有子路径当中的最大值。

因此,事实上问题就拆分成了两步:

  1. 找到所有的路径;
  2. 在每一条路径当中,计算所有走过 k k k步的遍历长度,亦即所有长度为 k + 1 k+1 k+1的所有子路径。

关于第一个问题,事实上就是一个拓扑序列的问题,显然,这里所有的路径最后都会进入到一个环当中,这里就有两种情况:

  1. 起点不在环当中,也就是先走过一段直线,然后进入到一个环当中;
  2. 起点就在环当中,也就是整条路径就是一个无限循环的圈;

而要找全这两种路径其实也简单,首先对于第一种情况,显然起点不会出现在receiver当中,因此我们对所有receiver当中没出现过的值作为起点分别考察一下即可。

然后,对于第二种情况,我们只要在处理完了第一种情况之后的剩余点当中逐一考察每一个点作为起点的情况遍历其路径即可。

而每一种遍历方法都一样,就是不断地走直到下次出现的点在已走过的路径当中已经出现过即可。

然后,我们考察对于一条给定的路径,如何求所有长度为 k + 1 k+1 k+1的所有子路径。

这个同样不复杂,就是考察以路径上每一个点作为起点时后续连续长度为 k + 1 k+1 k+1的子串,但是这里同样有些特殊情况,因为最后可能会进入到子环当中,因此后面的路径可能就会有循环,因此不够的部分我们需要用环来补充,然后这部分的操作事实上我们可以用环的长度进行求余来快速处理,即我们计算出环需要循环的次数和剩下需要多走的步数,然后直接计算即可。

2. 代码实现

给出python代码实现如下:

class Solution:def getMaxFunctionValue(self, receiver: List[int], k: int) -> int:n = len(receiver)status = [0 for _ in range(n)]def get_max_value(visited, idx):n = len(visited)m = n-idxaccums = [0] + list(accumulate(visited))d = k+1def get_value(i):if i + d <= n:return accums[i+d] - accums[i]r = i+d - na, b = r // m, r % mreturn accums[-1] - accums[i] + a * (accums[-1]-accums[idx]) + accums[idx+b] - accums[idx]res = max(get_value(i) for i in range(n))return resres = 0nxt = set(receiver)inits = [i for i in range(n) if i not in nxt]for i in inits:idx = iseen = set()visited = []while idx not in seen:status[idx] = 1seen.add(idx)visited.append(idx)idx = receiver[idx]res = max(res, get_max_value(visited, visited.index(idx)))for i in range(n):if status[i] == 1:continueidx = iseen = set()visited = []while idx not in seen:status[idx] = 1seen.add(idx)visited.append(idx)idx = receiver[idx]res = max(res, get_max_value(visited, visited.index(idx)))return res  

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

相关文章:

LeetCode笔记:Weekly Contest 360

LeetCode笔记&#xff1a;Weekly Contest 360 0. 吐槽1. 题目一 1. 解题思路2. 代码实现 2. 题目二 1. 解题思路2. 代码实现 3. 题目三 1. 解题思路2. 代码实现 4. 题目四 1. 解题思路2. 代码实现 比赛链接&#xff1a;https://leetcode.com/contest/weekly-contest-360/ 0.…...

【树DP】2021ICPC南京 H

Problem - H - Codeforces 题意&#xff1a; 思路&#xff1a; 这题应该算是铜牌题 铜牌题 简单算法 基础思维 简单复盘一下思路 首先&#xff0c;我们发现有个很特殊的条件&#xff1a; ti < 3 然后看一下样例&#xff1a; 注意到&#xff0c;对于一个结点 u &#…...

Leedcode19. 删除链表的倒数第 N 个结点

给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[] 示例 3&#xff1a; 输入&#xff1…...

Mysql-索引查询相关

一、单表查询 1.1 二级索引为null 不论是普通的二级索引&#xff0c;还是唯一二级索引&#xff0c;它们的索引列对包含 NULL 值的数量并不限制&#xff0c;所以我们采用key IS NULL 这种形式的搜索条件最多只能使用 ref 的访问方法&#xff0c;而不是 const 的访问方法 1.2 c…...

C++ Pimpl

Pimpl(Pointer to implementation&#xff0c;指向实现的指针) 是一种减少代码依赖和编译时间的C编程技巧&#xff0c;其基本思想是将一个外部可见类(visible class)的实现细节&#xff08;一般是所有私有的非虚成员&#xff09;放在一个单独的实现类(implementation class)中&…...

rust学习-类型转换

基本类型转换 // 不显示类型转换产生的溢出警告。 #![allow(overflowing_literals)]fn main() {let decimal 65.4321_f32;// 错误&#xff01;不提供隐式转换// let integer: u8 decimal;// 可以显式转换let integer decimal as u8;let character integer as char;println…...

算法通过村第四关-栈青铜笔记|手写栈操作

文章目录 前言1. 栈的基础概要1.1 栈的特征1.2 栈的操作1.3 Java中的栈 2. 栈的实现&#xff08;手写栈&#xff09;2.1 基于数组实现2.2 基于链表实现2.3 基于LinkedList实现 总结 前言 提示&#xff1a;我自己一个人的感觉很好 我并不想要拥有你 除非你比我的独处更加宜人 --…...

Python计算加速利器

迷途小书童的 Note 读完需要 6分钟 速读仅需 2 分钟 1 简介 Python 是一门应用非常广泛的高级语言&#xff0c;但是&#xff0c;长久以来&#xff0c;Python的运行速度一直被人诟病&#xff0c;相比 c/c、java、c#、javascript 等一众高级编程语言&#xff0c;完全没有优势。 那…...

PyTorch 深度学习实践 第10讲刘二大人

总结&#xff1a; 1.输入通道个数 等于 卷积核通道个数 2.卷积核个数 等于 输出通道个数 1.单通道卷积 以单通道卷积为例&#xff0c;输入为&#xff08;1,5,5&#xff09;&#xff0c;分别表示1个通道&#xff0c;宽为5&#xff0c;高为5。假设卷积核大小为3x3&#xff0c…...

Linux特殊指令

目录 1.dd命令 2.mkfs格式化 3.df命令 4.mount实现硬盘的挂载 5.unshare 1.dd命令 dd命令可以用来读取转换并输出数据。 示例一&#xff1a; if表示infile&#xff0c;of表示outfile。这里的/dev/zero是一个特殊文件&#xff0c;会不断产生空白数据。 bs表示复制一块的大…...

MPI之主从模式的一般编程示例

比如&#xff0c;我们可以选举0号进程为master进程&#xff0c;其余进程为slaver进程 #include "mpi.h" #include <unistd.h> #include <iostream>int main(int argc, char *argv[]) {int err MPI_Init(&argc,&argv);int rank,size;MPI_Comm_r…...

基于野狗算法优化的BP神经网络(预测应用) - 附代码

基于野狗算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于野狗算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.野狗优化BP神经网络2.1 BP神经网络参数设置2.2 野狗算法应用 4.测试结果&#xff1a;5.Matlab代码 摘要…...

C语言面向对象的编程思想

面向对象编程 面向对象编程Object-Oriented Programming&#xff0c;OOP&#xff09; 作为一种新方法&#xff0c;其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。模型是用来反映现实世界中事物特征的。任何一个模型都不可能反映客观事物的一切具体特征&#xff0…...

MPI之非阻塞通信中通信完成检测接口简介

在之前的文章中&#xff0c;简单的写了一个非阻塞的通信代码介绍最最基本的使用&#xff1a; int main(int argc, char *argv[]) {int err MPI_Init(&argc,&argv);int rank,size;MPI_Comm_rank(MPI_COMM_WORLD,&rank);MPI_Comm_size(MPI_COMM_WORLD, &size);…...

Excel:如何实现分组内的升序和降序?

一、POWER 1、构建辅助列D列&#xff0c;在D2单元格输入公式&#xff1a; -POWER(10,COUNTA($A$2:A2)3)C2 2、选中B1:D10&#xff0c;注意不能宣导A列的合并单元格&#xff0c;进行以下操作&#xff1a; 3、删除辅助列即可 二、COUNTA 第一步&#xff0c;D2建立辅助列&#xf…...

深度学习论文: Segment Any Anomaly without Training via Hybrid Prompt Regularization

深度学习论文: Segment Any Anomaly without Training via Hybrid Prompt Regularization Segment Any Anomaly without Training via Hybrid Prompt Regularization PDF: https://arxiv.org/pdf/2305.10724.pdf PyTorch代码: https://github.com/shanglianlm0525/CvPytorch Py…...

【算法训练-字符串】一 最长无重复子串

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是最长无重复子串或最长无重复子数组&#xff0c;这类题目出现频率还是很高的。 最长无重复子串【MID】 先来看字符串数据结构的题目 题干 解题思…...

【数据结构】手撕顺序表

一&#xff0c;概念及结构 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构&#xff0c;一般情况下采用数组存储&#xff1b; 在数组上完成数据的增删查改。 1&#xff0c; 静态顺序表&#xff1a;使用定长数组存储元素。 2.&#xff0c;动态顺序表&#xff1…...

景联文科技数据标注:人体关键点标注用途及各点的位置定义

人体关键点标注是一种计算机视觉任务&#xff0c;指通过人工的方式&#xff0c;在指定位置标注上关键点&#xff0c;例如人脸特征点、人体骨骼连接点等&#xff0c;常用来训练面部识别模型以及统计模型。这些关键点可以表示图像的各个方面&#xff0c;例如角、边或特定特征。在…...

typescript基础之never

TypeScript 的 never 类型是一种特殊的类型&#xff0c;它表示的是那些永远不存在的值的类型。例如&#xff0c;一个抛出异常或无限循环的函数的返回值类型就是 never&#xff0c;因为它们永远不会返回任何值。never 类型是所有类型的子类型&#xff0c;也就是说&#xff0c;任…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...