LeetCode 第 29 场双周赛(890/2259,前39.4%)

文章目录

    • 1. 比赛结果
    • 2. 题目
      • 1. LeetCode 5432. 去掉最低工资和最高工资后的工资平均值 easy
      • 2. LeetCode 5433. n 的第 k 个因子 medium
      • 3. LeetCode 5434. 删掉一个元素以后全为 1 的最长子数组 medium
      • 4. LeetCode 5435. 并行课程 II hard

1. 比赛结果

做出来了3道题。第三题卡了一会,第四题知道拓扑排序,后面就没有思路了。继续加油!

全国排名:890 / 2259,39.4%;全球排名: 3407 / 7933,42.9%
在这里插入图片描述
在这里插入图片描述

2. 题目

1. LeetCode 5432. 去掉最低工资和最高工资后的工资平均值 easy

题目链接

给你一个整数数组 salary ,数组里每个数都是 唯一 的,其中 salary[i] 是第 i 个员工的工资。

请你返回去掉最低工资和最高工资以后,剩下员工工资的平均值

示例 1:
输入:salary = [4000,3000,1000,2000]
输出:2500.00000
解释:最低工资和最高工资分别是 10004000 。
去掉最低工资和最高工资以后的平均工资是 (2000+3000)/2= 2500示例 2:
输入:salary = [1000,2000,3000]
输出:2000.00000
解释:最低工资和最高工资分别是 10003000 。
去掉最低工资和最高工资以后的平均工资是 (2000)/1= 2000示例 3:
输入:salary = [6000,5000,4000,3000,2000,1000]
输出:3500.00000示例 4:
输入:salary = [8000,9000,2000,3000,6000,1000]
输出:4750.00000提示:
3 <= salary.length <= 100
10^3 <= salary[i] <= 10^6
salary[i] 是唯一的。
与真实值误差在 10^-5 以内的结果都将视为正确答案。

解题:

class Solution {//C++
public:double average(vector<int>& salary) {int MAX = *max_element(salary.begin(), salary.end());int MIN = *min_element(salary.begin(), salary.end());int sum = accumulate(salary.begin(), salary.end(),0);return (sum-MAX-MIN)/double(salary.size()-2);}
};
class Solution:# py3def average(self, salary: List[int]) -> float:salary.sort()s = sum(salary)-salary[0]-salary[-1]return s/(len(salary)-2)

2. LeetCode 5433. n 的第 k 个因子 medium

题目链接
给你两个正整数 n 和 k 。

如果正整数 i 满足 n % i == 0 ,那么我们就说正整数 i 是整数 n 的因子。

考虑整数 n 的所有因子,将它们 升序排列
请你返回第 k 个因子。如果 n 的因子数少于 k ,请你返回 -1 。

示例 1:
输入:n = 12, k = 3
输出:3
解释:因子列表包括 [1, 2, 3, 4, 6, 12],第 3 个因子是 3 。示例 2:
输入:n = 7, k = 2
输出:7
解释:因子列表包括 [1, 7] ,第 2 个因子是 7 。示例 3:
输入:n = 4, k = 4
输出:-1
解释:因子列表包括 [1, 2, 4] ,只有 3 个因子,所以我们应该返回 -1 。示例 4:
输入:n = 1, k = 1
输出:1
解释:因子列表包括 [1] ,第 1 个因子为 1 。示例 5:
输入:n = 1000, k = 3
输出:4
解释:因子列表包括 [1, 2, 4, 5, 8, 10, 20, 25, 40, 50, 
100, 125, 200, 250, 500, 1000] 。提示:
1 <= k <= n <= 1000

解题:

class Solution {//C++
public:int kthFactor(int n, int k) {set<int> s;for(int i = 1; i <= n; i++) {if(n%i==0)s.insert(i);}if(s.size() < k)return -1;auto it = s.begin();while(--k && it != s.end()){it++;}return *it;}
};

or

  • 因为是有序的,直接遍历到第k个返回即可
class Solution {	//C++
public:int kthFactor(int n, int k) {for(int i = 1; i <= n; ++i){if(n%i==0){k--;if(k==0)return i;}}return -1;}
};
class Solution:# py3def kthFactor(self, n: int, k: int) -> int:s = set()for i in range(1,n+1):if n%i == 0:s.add(i)if len(s) < k:return -1l = list(s)l.sort()return l[k-1]

3. LeetCode 5434. 删掉一个元素以后全为 1 的最长子数组 medium

题目链接
给你一个二进制数组 nums ,你需要从中删掉一个元素。

请你在删掉元素的结果数组中,返回最长的且只包含 1 的非空子数组的长度。

如果不存在这样的子数组,请返回 0 。

示例 1:
输入:nums = [1,1,0,1]
输出:3
解释:删掉位置 2 的数后,[1,1,1] 包含 31 。示例 2:
输入:nums = [0,1,1,1,0,1,1,0,1]
输出:5
解释:删掉位置 4 的数字后,
[0,1,1,1,1,1,0,1] 的最长全 1 子数组为 [1,1,1,1,1] 。示例 3:
输入:nums = [1,1,1]
输出:2
解释:你必须要删除一个元素。示例 4:
输入:nums = [1,1,0,0,1,1,1,0,1]
输出:4示例 5:
输入:nums = [0,0,0]
输出:0提示:
1 <= nums.length <= 10^5
nums[i] 要么是 0 要么是 1

解题:

类似题目:LeetCode 1004. 最大连续1的个数 III(滑动窗口)

  • 比赛,没想出滑动窗口,很差的代码如下(记录所有的窗口,再检查能否合并)
class Solution {//C++
public:int longestSubarray(vector<int>& nums) {int maxlen = 0;vector<vector<int>> lr;//记录所有区间int l = -1, r = -1;for(int i = 0; i < nums.size(); i++) {if(nums[i]&&l==-1)l = i;if(l != -1 && nums[i]==0 && r==-1)r = i-1;if(nums[i] && i == nums.size()-1)r = nums.size()-1;if(l!=-1 && r!=-1){lr.push_back({l,r});l = r = -1;}}if(lr.size()==0)return 0;if(lr.size()==1){if(lr[0][0]!=0 || lr[0][1]!=nums.size()-1)return lr[0][1]-lr[0][0]+1;elsereturn nums.size()-1;}maxlen = max(maxlen, lr[0][1]-lr[0][0]+1);for(int i = 0,j; i < lr.size()-1; i++){j = i+1;//判断相邻的两个区间能否合并if(lr[i][1]+2==lr[j][0])maxlen = max(maxlen, lr[j][1]-lr[i][0]);elsemaxlen = max(maxlen, lr[j][1]-lr[j][0]+1);}return maxlen;}
};
class Solution:# py3def longestSubarray(self, nums: List[int]) -> int:maxlen = 0lr = []l, r = -1, -1for i in range(len(nums)):if nums[i] and l==-1:l = iif l != -1 and nums[i]==0 and r==-1:r = i-1if nums[i] and i == len(nums)-1:r = len(nums)-1if l != -1 and r != -1:lr.append([l,r])l, r = -1, -1if len(lr)==0:return 0if len(lr)==1:if lr[0][0]!=0 or lr[0][1]!=len(nums)-1:return lr[0][1]-lr[0][0]+1else:return len(nums)-1maxlen = max(maxlen, lr[0][1]-lr[0][0]+1)for i in range(len(lr)-1):j = i+1if lr[i][1]+2==lr[j][0]:maxlen = max(maxlen, lr[j][1]-lr[i][0])else:maxlen = max(maxlen, lr[j][1]-lr[j][0]+1)return maxlen
  • 滑动窗口,根据可以删除的0的个数k,来收放窗口
class Solution {	//C++滑窗
public:int longestSubarray(vector<int>& nums) {int l = 0, r= 0, maxlen = 0, k=1;while(r < nums.size()){if(nums[r++]==0)k--;//可以删除的0的个数while(k < 0){if(nums[l++]==0)k++;}maxlen = max(maxlen, r-l-1);}return maxlen;}
};

4. LeetCode 5435. 并行课程 II hard

题目链接
给你一个整数 n 表示某所大学里课程的数目,编号为 1 到 n ,数组 dependencies 中, dependencies[i] = [xi, yi] 表示一个先修课的关系,也就是课程 xi 必须在课程 yi 之前上。同时你还有一个整数 k 。

在一个学期中,你 最多 可以同时上 k 门课,前提是这些课的先修课在之前的学期里已经上过了。

请你返回上完所有课最少需要多少个学期。题目保证一定存在一种上完所有课的方式。

示例 1:
在这里插入图片描述

输入:n = 4, dependencies = [[2,1],[3,1],[1,4]], k = 2
输出:3 
解释:上图展示了题目输入的图。
在第一个学期中,我们可以上课程 2 和课程 3 。
然后第二个学期上课程 1 ,第三个学期上课程 4

示例 2:
在这里插入图片描述

输入:n = 5, dependencies = [[2,1],[3,1],[4,1],[1,5]], k = 2
输出:4 
解释:上图展示了题目输入的图。一
个最优方案是:第一学期上课程 23,第二学期上课程 4 ,
第三学期上课程 1 ,第四学期上课程 5 。示例 3:
输入:n = 11, dependencies = [], k = 2
输出:6提示:
1 <= n <= 15
1 <= k <= n
0 <= dependencies.length <= n * (n-1) / 2
dependencies[i].length == 2
1 <= xi, yi <= n
xi != yi
所有先修关系都是不同的,也就是说 dependencies[i] != dependencies[j] 。
题目输入的图是个有向无环图。

解题:

待补

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475428.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【dll 返回字符串 】2

【vc <--> vc】返回void* 类型void* __stdcall torrent_hash( const char *TorrentFilePath){char szText[41]{0};if(strcmp(TorrentFilePath,"") 0 || TorrentFilePath NULL)return NULL;string strHashString "abcdefg"; sprintf(szText,&qu…

LeetCode 1496. 判断路径是否相交(set)

1. 题目 给你一个字符串 path&#xff0c;其中 path[i] 的值可以是 ‘N’、‘S’、‘E’ 或者 ‘W’&#xff0c;分别表示向北、向南、向东、向西移动一个单位。 机器人从二维平面上的原点 (0, 0) 处开始出发&#xff0c;按 path 所指示的路径行走。 如果路径在任何位置上出…

电压压力蕊片_一文让你知道什么是压力变送器

一般来说&#xff0c;压力变送器主要由测压元件传感器(也称作压力传感器)、测量电路和过程连接件三部分组成。它能将测压元件传感器感受到的气体、液体等物理压力参数转变成标准的电信号(如4~20mADC等)&#xff0c;以供给指示报警仪、记录仪、调节器等二次仪表进行测量、指示和…

C# 多线程编程 ThreadStart ParameterizedThreadStart

原文地址&#xff1a;http://club.topsage.com/thread-657023-1-1.html 在实例化Thread的实例&#xff0c;需要提供一个委托&#xff0c;在实例化这个委托时所用到的参数是线程将来启动时要运行的方法。在.net中提供了两种启动线程的方式&#xff0c;一种是不带参数的启动…

Matlab编程学习笔记【待续】

最近想用Matlab进行数据分析&#xff0c;算法性能测试&#xff0c;平时由于用的是C、C&#xff0c;因此很多习惯都一时改不了&#xff0c;这里自己列出来一些Matlab中明显不同的地方。 矩阵单元元素访问方式&#xff1a;A(1,2)---A[1][2]选取矩阵某个行或者列&#xff1a;A(:,1…

animation 先执行一次 在持续执行_这一次,彻底弄懂 JavaScript 执行机制

本文来源&#xff1a;ssssyokihttps://juejin.im/post/6844903512845860872不论你是javascript新手还是老鸟&#xff0c;不论是面试求职&#xff0c;还是日常开发工作&#xff0c;我们经常会遇到这样的情况&#xff1a;给定的几行代码&#xff0c;我们需要知道其输出内容和顺序…

[scikit-learn 机器学习] 5. 多元线性回归

文章目录1. 多元线性回归2. 多项式回归3. 正则化4. 线性回归应用举例&#xff08;酒质量预测&#xff09;4.1 数据预览4.2 模型验证5. 梯度下降法本文为 scikit-learn机器学习&#xff08;第2版&#xff09;学习笔记1. 多元线性回归 模型 yαβ1x1β2x2...βnxny \alpha\bet…

LeetCode 831. 隐藏个人信息

1. 题目 给你一条个人信息字符串 S&#xff0c;它可能是一个 邮箱地址 &#xff0c;也可能是一串 电话号码 。 我们将隐藏它的隐私信息&#xff0c;通过如下规则: 电子邮箱 定义名称 name 是长度大于等于 2 &#xff08;length ≥ 2&#xff09;&#xff0c;并且只包含小写…

bootstrap 树形表格渲染慢_layUI之树状表格异步加载组件treetableAsync.js(基于treetable.js)...

概述后台框架中使用树状表格是非常常用的操作&#xff0c;layUI本身并没有这种组件。 第三方的treetable.js做到了完美的实现&#xff0c;但是不能实现在双击时异步加载数据&#xff0c;本文就是站在了巨人的肩膀上实现的异步加载的树状表格~1. 使用说明本组件基于treetable.js…

[scikit-learn 机器学习] 6. 逻辑回归

文章目录1. 逻辑回归二分类2. 垃圾邮件过滤2.1 性能指标2.2 准确率2.3 精准率、召回率2.4 F1值2.5 ROC、AUC3. 网格搜索调参4. 多类别分类5. 多标签分类5.1 多标签分类性能指标本文为 scikit-learn机器学习&#xff08;第2版&#xff09;学习笔记逻辑回归常用于分类任务 1. 逻…

libsvm回归参数寻优cgp_【lightgbm/xgboost/nn代码整理二】xgboost做二分类,多分类以及回归任务...

1.简介该部分是代码整理的第二部分&#xff0c;为了方便一些初学者调试代码&#xff0c;作者已将该部分代码打包成一个工程文件&#xff0c;包含简单的数据处理、xgboost配置、五折交叉训练和模型特征重要性打印四个部分。数据处理部分参考&#xff1a;代码整理一&#xff0c;这…

[scikit-learn 机器学习] 7. 朴素贝叶斯

文章目录1. 朴素贝叶斯2. NB 与 逻辑回归对比本文为 scikit-learn机器学习&#xff08;第2版&#xff09;学习笔记相关知识参考&#xff1a;《统计学习方法》朴素贝叶斯法&#xff08;Naive Bayes&#xff0c;NB&#xff09; 1. 朴素贝叶斯 通过最大概率来预测类&#xff1a…

塔菲克蓝牙适配器驱动_小身材,大功能,biaze毕亚兹USB蓝牙适配器开箱体验

在日常生活中&#xff0c;我们平时使用的台式电脑或是笔记本电脑&#xff0c;想要传输数据或者音频的时候&#xff0c;都是需要借助数据传输线或是U盘等传输设备&#xff0c;使用过程可想而知&#xff0c;有点麻烦。我们都知道&#xff0c;手机是有蓝牙传输功能的&#xff0c;只…

HDU1003——MAX SUM

简单DP&#xff0c;状态转移公式&#xff1a;num[j].data max{num[j].data, num[j].datanum[j-1].data}&#xff0c;也就是保证加上前一个数不失自己的值减小。 View Code #include <stdio.h>#define N 100010#define inf 9999999struct _num{int data;int pre;int nex…

[scikit-learn 机器学习] 8. 非线性分类和决策树

文章目录1. 特征选择标准2. 网页广告预测2.1 数量处理2.2 网格搜索模型参数3. 决策树优缺点本文为 scikit-learn机器学习&#xff08;第2版&#xff09;学习笔记相关知识&#xff1a;《统计学习方法》决策树&#xff08;Decision Tree&#xff0c;DT&#xff09; 1. 特征选择…

智慧新泰时空大数据与云平台_智慧警务大数据云平台开发情报研判系统解决方案...

智慧公安作为公安信息化开展到高级阶段的一种警务形态&#xff0c;“智慧公安”主要采用物联网、云计算、无线通讯、智能动态感知分析等新一代信息技术,将公安工作IT根底设备与物理设备、人际环境等高度交融,以提供智能化公安决策与效劳。智慧警务大数据云平台开发情报研判系统…

RGB颜色查询对照表#FFFFFF

大致是下图这样的&#xff0c;有需要的可以点击下面的连接复制使用&#xff1a; https://www.114la.com/other/rgb.htm

ikbc机械键盘打字出现重复_超小无线机械键盘,绝佳移动打字体验

NuType筹资信息产品名称NuType上线平台Kickstarter发起团队NUPHY发起地区中国香港目标金额80,000HKD筹集金额1,301,212HKD完全进度1,627%支持人数1,612最低价格697HKD上线时间2019/11/13-2019/12/28创次方/制表时间&#xff1a;2019年12月28日文/大智笔电键盘的打字体验远不及桌…

MySQL - 定时任务(每天凌晨1点、每小时、每分钟、某一时间点)

常用的一定要写在前面 # 从2019-10-11开始&#xff0c;每天的00:30:00执行定时任务 ON SCHEDULE EVERY 1 DAY STARTS 2019-10-11 00:30:00 # 每天的凌晨1点执行定时任务 ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR)# 特…

极光无限渗透测试面经_认识工业以太网及线缆测试

工业以太网由于其固有的可靠性、高性能和互操作性&#xff0c;已经渗透到工厂车间&#xff0c;成为自动化和控制系统的首选通信协议。近年&#xff0c;工业以太网的市场份额已经超过了传统的现场总线协议&#xff0c;总线协议通常需要多个独立和专有的布线设施。为了满足工业环…