【Leetcode Sheet】Weekly Practice 6

Leetcode Test

2605 从两个数字数组里生成最小数字(9.5)

给你两个只包含 1 到 9 之间数字的数组 nums1nums2 ,每个数组中的元素 互不相同 ,请你返回 最小 的数字,两个数组都 至少 包含这个数字的某个数位。

提示:

  • 1 <= nums1.length, nums2.length <= 9
  • 1 <= nums1[i], nums2[i] <= 9
  • 每个数组中,元素 互不相同

【hash table】

int minNumber(int* nums1, int nums1Size, int* nums2, int nums2Size){int n1=nums1Size,n2=nums2Size;int hash[10]={0};int min1=10,min2=10;for(int i=0;i<n1;i++){hash[nums1[i]]++;min1=fmin(min1,nums1[i]);}for(int i=0;i<n2;i++){hash[nums2[i]]++;min2=fmin(min2,nums2[i]);}//找出现过2次的数字,以及两个arr中的最小数int equal=0,min=10;for(int i=1;i<10;i++){if(hash[i]==2){equal=1;min=fmin(min,i);}}//有出现过2次数字,直接返回最小数if(equal) return min;else{if(min1>min2){return min1+min2*10;}else{return min2+min1*10;}}
}

1123 最深叶节点的最近公共祖先(9.6)

给你一个有根节点 root 的二叉树,返回它 最深的叶节点的最近公共祖先

回想一下:

  • 叶节点 是二叉树中没有子节点的节点
  • 树的根节点的 深度0,如果某一节点的深度为 d,那它的子节点的深度就是 d+1
  • 如果我们假定 A 是一组节点 S最近公共祖先S 中的每个节点都在以 A 为根节点的子树中,且 A 的深度达到此条件下可能的最大值。

提示:

  • 树中的节点数将在 [1, 1000] 的范围内。
  • 0 <= Node.val <= 1000
  • 每个节点的值都是 独一无二 的。

【递归】

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*/int getDepth(struct TreeNode *root){if(!root) return 0;//如果root==null,则返回0层return fmax(getDepth(root->left),getDepth(root->right))+1;//递归返回左右子树,层数++
}struct TreeNode* lcaDeepestLeaves(struct TreeNode* root){struct TreeNode *res=root,*cur=root;while(cur){  //当cur不为空时int left=getDepth(cur->left);int right=getDepth(cur->right);//left为当前节点的左节点的层//right为当前节点的右节点的层//层:从叶子节点往上的层数if(left==right){//如果左节点的层==右节点的层,则左右为叶子res=cur;break;}else if(left>right){//左更深cur=cur->left;}else{//右更深cur=cur->right;}}return res;
}

2594 修车的最少时间(9.7)

给你一个整数数组 ranks ,表示一些机械工的 能力值ranksi 是第 i 位机械工的能力值。能力值为 r 的机械工可以在 r * n2 分钟内修好 n 辆车。

同时给你一个整数 cars ,表示总共需要修理的汽车数目。

请你返回修理所有汽车 最少 需要多少时间。

**注意:**所有机械工可以同时修理汽车。

提示:

  • 1 <= ranks.length <= 105
  • 1 <= ranks[i] <= 100
  • 1 <= cars <= 106

【二分法】

能力值为r的工人,最多可以修sqrt(t/r)个车

二分上界为:min(ranks) x cars x cars

即让能力最低的人修好所有车,消耗的时间

int check(long long n,int cars,int *ranks,int ranksSize){long long sum=0;for(int i=0;i<ranksSize;i++){sum+=sqrt(n/ranks[i]);}return sum>=cars;
}long long repairCars(int *ranks,int ranksSize,int cars){long long left=1,right=ranks[0];for(int i=0;i<ranksSize;i++){right=fmin(ranks[i],right);}right=right*cars*cars-1;while(left<=right){long long mid=(left+right)/2;if(check(mid,cars,ranks,ranksSize)){right=mid-1;}else{left=mid+1;}}return left;
}

2651 计算列车到站时间(9.8)

给你一个正整数 arrivalTime 表示列车正点到站的时间(单位:小时),另给你一个正整数 delayedTime 表示列车延误的小时数。

返回列车实际到站的时间。

注意,该问题中的时间采用 24 小时制。

提示:

  • 1 <= arrivaltime < 24
  • 1 <= delayedTime <= 24

【模拟】

int findDelayedArrivalTime(int arrivalTime, int delayedTime){return (arrivalTime+delayedTime)%24;
}

207 课程表(9.9)

你这个学期必须选修 numCourses 门课程,记为 0numCourses - 1

在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai必须 先学习课程 bi

  • 例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1

请你判断是否可能完成所有课程的学习?如果可以,返回 true ;否则,返回 false

提示:

  • 1 <= numCourses <= 2000
  • 0 <= prerequisites.length <= 5000
  • prerequisites[i].length == 2
  • 0 <= ai, bi < numCourses
  • prerequisites[i] 中的所有课程对 互不相同

【拓扑】

题解:207. 课程表 - 力扣(LeetCode)

bool canFinish(int numCourses, int** prerequisites, int prerequisitesSize, int* prerequisitesColSize){if(prerequisitesSize==0) return 1;int *ans=malloc(sizeof(int)*numCourses);for(int i=0;i<numCourses;i++){ans[i]=0;}int res=0;for(int i=0;i<prerequisitesSize;i++){//update in-point of every pointans[prerequisites[i][0]]++;}for(int i=0;i<numCourses;i++){if(ans[i]==0){//current course is doneres++;if(res==numCourses){//learned courses == total coursesreturn 1;}for(int j=0;j<prerequisitesSize;j++){if(prerequisites[j][1]==i){//must-learn course of [j] is learntans[prerequisites[j][0]]--;}}ans[i]--;i=-1;}}return 0;
}

210 课程表Ⅱ(9.10)

现在你总共有 numCourses 门课需要选,记为 0numCourses - 1。给你一个数组 prerequisites ,其中 prerequisites[i] = [ai, bi] ,表示在选修课程 ai必须 先选修 bi

  • 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示:[0,1]

返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回 任意一种 就可以了。如果不可能完成所有课程,返回 一个空数组

提示:

  • 1 <= numCourses <= 2000
  • 0 <= prerequisites.length <= numCourses * (numCourses - 1)
  • prerequisites[i].length == 2
  • 0 <= ai, bi < numCourses
  • ai != bi
  • 所有[ai, bi] 互不相同

【拓扑】

/*** Note: The returned array must be malloced, assume caller calls free().*/
int* findOrder(int numCourses, int** prerequisites, int prerequisitesSize, int* prerequisitesColSize, int* returnSize){int** edges = (int**)malloc(sizeof(int*) * numCourses);for (int i = 0; i < numCourses; i++) {edges[i] = (int*)malloc(0);}int edgeColSize[numCourses];memset(edgeColSize, 0, sizeof(edgeColSize));int indeg[numCourses];memset(indeg, 0, sizeof(indeg));for (int i = 0; i < prerequisitesSize; ++i) {int a = prerequisites[i][1], b = prerequisites[i][0];edgeColSize[a]++;edges[a] = (int*)realloc(edges[a], sizeof(int) * edgeColSize[a]);edges[a][edgeColSize[a] - 1] = b;++indeg[b];}int q[numCourses];int l = 0, r = -1;for (int i = 0; i < numCourses; ++i) {if (indeg[i] == 0) {q[++r] = i;}}int* result = (int*)malloc(sizeof(int) * numCourses);int resultSize = 0;int visited = 0;while (l <= r) {++visited;int u = q[l++];result[resultSize++] = u;for (int i = 0; i < edgeColSize[u]; ++i) {--indeg[edges[u][i]];if (indeg[edges[u][i]] == 0) {q[++r] = edges[u][i];}}}for (int i = 0; i < numCourses; i++) {free(edges[i]);}free(edges);if (visited == numCourses) {*returnSize = numCourses;} else {*returnSize = 0;}return result;
}

630 课程表Ⅲ(9.11)

这里有 n 门不同的在线课程,按从 1n 编号。给你一个数组 courses ,其中 courses[i] = [durationi, lastDayi] 表示第 i 门课将会 持续durationi 天课,并且必须在不晚于 lastDayi 的时候完成。

你的学期从第 1 天开始。且不能同时修读两门及两门以上的课程。

返回你最多可以修读的课程数目。

提示:

  • 1 <= courses.length <= 104
  • 1 <= durationi, lastDayi <= 104

【C++的优先队列】(不会orz)

class Solution {
public:int scheduleCourse(vector<vector<int>>& courses) {sort(courses.begin(), courses.end(), [](const auto& c0, const auto& c1) {return c0[1] < c1[1];});priority_queue<int> q;// 优先队列中所有课程的总时间int total = 0;for (const auto& course: courses) {int ti = course[0], di = course[1];if (total + ti <= di) {total += ti;q.push(ti);}else if (!q.empty() && q.top() > ti) {total -= q.top() - ti;q.pop();q.push(ti);}}return q.size();}
};

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

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

相关文章

MySQL8--my.cnf配置文件的设置

原文网址&#xff1a;MySQL8--my.cfg配置文件的设置_IT利刃出鞘的博客-CSDN博客 简介 本文介绍MySQL8的my.cnf的配置。 典型配置 [client] default-character-setutf8mb4[mysql] default-character-setutf8mb4[mysqld] #服务端口号 默认3306 port3306datadir /work/docker…

一个FlutterCocoapods项目打包问题集锦

一个Flutter&Cocoapods项目打包问题集锦 问题1 github加速问题 cocoapods项目需要访问https://github.com/CocoaPods/Specs.git&#xff0c;众所周知&#xff0c;github经常被墙&#xff0c;导致经常需要借助加速来下载和访问&#xff0c;这里可以使用油猴脚本或者Fastgi…

kibana报错内存溢出问题解决

一、背景&#xff1a; kibana内存溢出&#xff0c;进程被kill掉&#xff0c;导致前端页面访问不到。 报错内容 二、报错原因&#xff1a; 发现是前端 js 报的内存 oom 异常&#xff0c;通过网上资料发现node.js 的默认内存大小为1.4G Node 中通过 JavaScript 使用内存时只能…

Promethues(五)查询-PromQL 语言-保证易懂好学

文章目录 一、介绍二、PromQL 数据类型三、常量1 字符串2 浮点 四、时间序列选择器 Time series Selectors1 即时矢量&#xff08;Instant vector&#xff09;选择器2 范围矢量选择器2.1 时间长度2.2 偏移修饰符2.3 修饰符 3 避免慢速查询和过载 五、子查询六、操作符 Operato…

【C++】深拷贝和浅拷贝 ② ( 默认拷贝构造函数是浅拷贝 | 代码示例 - 浅拷贝造成的问题 )

文章目录 一、默认拷贝构造函数是浅拷贝1、默认拷贝构造函数2、默认拷贝构造函数是浅拷贝机制 二、代码示例 - 浅拷贝造成的问题 一、默认拷贝构造函数是浅拷贝 1、默认拷贝构造函数 如果 C 类中 没有定义拷贝构造函数 , C 编译器会自动为该类提供一个 " 默认的拷贝构造函…

连接MySQL时报错:Public Key Retrieval is not allowed的解决方法

问题描述&#xff1a; DBeaver 连接 mysql 时报错&#xff1a;Public Key Retrieval is not allowed&#xff08;不允许公钥检索&#xff09; 解决方法&#xff1a; 连接设置 -> 驱动属性 -> allowPublicKeyRetrievalfalse&#xff08;这里的运输公钥检索是默认关闭的&a…

如何在RK3568开发板上实现USBNET?——飞凌嵌入式/USB Gadget/USB-NET/网络

本文将借助飞凌嵌入式OK3568-C开发板为大家介绍实现USBNET模式的方法&#xff0c;在这之前需要先知道什么是USB Gadget——USB Gadget是指所开发的电子设备以USB从设备的模式通过USB连接到主机。举个例子&#xff1a;将手机通过USB线插入PC后&#xff0c;手机就是USB Gadget。同…

pt24django教程

静态文件访问 不能与服务器端做动态交互的文件都是静态文件&#xff0c;如: 图片,css,js,音频,视频,html文件(部分) 静态文件配置 在 settings.py 中配置一下两项内容: STATIC_URL 静态文件的访问路径&#xff0c;通过哪个url地址找静态文件 &#xff0c;STATIC_URL ‘/s…

[Linux入门]---搭建Linux环境

1.Linux环境的搭建方式 使用Linux操作系统的三种途径&#xff1a; 1.直接安装在物理机上&#xff0c;但是由于 Linux 桌面使用起来非常不友好&#xff0c;不推荐。 2.使用虚拟机软件&#xff0c;将 Linux 搭建在虚拟机上&#xff0c;但是由于当前的虚拟机软件(如 VMWare 之类的…

多线程案例(3) - 定时器,线程池

一&#xff0c;定时器 定时器作用&#xff1a;约定一个时间间隔&#xff0c;时间到达后&#xff0c;执行某段代码逻辑。实际上就是一个 "闹钟" 。 1.1使用标准库中的定时器 标准库中提供了一个 Timer 类. Timer 类的核心方法为 schedule .Timer 类中含有一个扫描线…

element-ui文件下载(单个)

1. 单个附件下载 <el-buttontype"text"size"small"click.native.prevent"download(scope.row)" >下载</el-button>export default {data() {return {downloadUrl: http://127.0.0.1:8881/XX/XX, // 下载接口}},methods: {download(…

国庆中秋特辑(一)浪漫祝福方式 用循环神经网络(RNN)或长短时记忆网络(LSTM)生成祝福诗词

目录 一、使用深度学习中的循环神经网络&#xff08;RNN&#xff09;或长短时记忆网络&#xff08;LSTM&#xff09;生成诗词二、优化&#xff1a;使用双向 LSTM 或 GRU 单元来更好地捕捉上下文信息三、优化&#xff1a;使用生成对抗网络&#xff08;GAN&#xff09;或其他技术…

YOLOV7改进-添加基于注意力机制的目标检测头(DYHEAD)

DYHEAD 复制到这&#xff1a; 1、models下新建文件 2、yolo.py中import一下 3、改IDetect这里 4、论文中说6的效果最好&#xff0c;但参数量不少&#xff0c;做一下工作量 5、在进入IDetect之前&#xff0c;会对RepConv做卷积 5、因为DYHEAD需要三个层输入的特征层一致&am…

Jetpack Compose 介绍和快速上手

Compose版本发展 19年&#xff0c;Compose在Google IO大会横空出世&#xff0c;大家都议论纷纷&#xff0c;为其前途堪忧。 21年7月Compose 1.0的正式发布&#xff0c;却让大家看到了Google在推广Compose上的坚决&#xff0c;这也注定Compose会成为UI开发的新风向。 23年1月…

can‘t sync to target.

飞翔仿真器 无法 与S12单片机 建立联系&#xff0c;仿真时显示 cant sync to target. 但是使用仿真器与其他板子连接仿真是没问题的。 首先怀疑硬件问题&#xff1a;没发现问题&#xff1b; 然后&#xff0c;勇敢的点击菜单中 设置速度&#xff0c;根据自己晶振和建议设置如…

套接字通信之 端口

端口 端口的本质? 无符号短整型数-> unsigned short端口取值范围? 可以有多少个端口? 2的16次方取值范围:0 - 65535 端口的作用? 定位某台主机上运行的某个进程 在电脑上运行了微信和QQ&#xff0c;小明给我的的微信发消息&#xff0c;电脑上的微信就收到了消息&#…

C语言经典100例题(56-60)--画圆;画方;画线

目录 【程序56】题目&#xff1a;画图&#xff0c;学用circle画圆形 【程序57】题目&#xff1a;画图&#xff0c;学用line画直线。 【程序58】题目&#xff1a;画图&#xff0c;学用rectangle画方形。 【程序59】题目&#xff1a;画图&#xff0c;综合例子。 【程序60】题…

arcgis拓扑检查实现多个矢量数据之间消除重叠区域

目录 环境介绍&#xff1a; 操作任务&#xff1a; 步骤&#xff1a; 1、数据库和文件结构准备 2、建立拓扑规则 3、一直下一页默认参数后&#xff0c;进行拓扑检查 4、打开TP_CK_Topology&#xff0c;会自动带出拓扑要素&#xff0c;红色区域为拓扑错误的地方&#xff1…

upload-labs文件上传靶场实操

文章目录 1.Pass-012.Pass-023.Pass-034.Pass-045.Pass-056.Pass-067.Pass-078.Pass-089.Pass-0910.Pass-1011.Pass-1112.Pass-1213.Pass-1314.Pass-1415.Pass-1516.Pass-1617.Pass-1718.Pass-1819.Pass-1920.Pass-20 上传姿势总结&#xff1a; 1)改后缀名绕过 2)Content-Type绕…

flink-1.14.4启动报错setPreferCheckpointForRecovery(Z)v

从flink1.12升级到flink1.14&#xff0c;修改了pom.xml的flink-version&#xff0c;打包的时候发现报错&#xff1a; // 当有较新的 Savepoint 时&#xff0c;作业也会从 Checkpoint 处恢复env.getCheckpointConfig().setPreferCheckpointForRecovery(true); 于是屏蔽了这段配置…