【LeetCode每日一题】2024年9月第二周(上)

 2024.9.9 中等  难度评分 1333

链接:2181. 合并零之间的节点

(1)题目描述:

(2)示例

(3)分析

        整体来说,描述还算清晰的题目,找到0节点所框定的区域,进行加和即可。

        思路:从0开始逐个遍历所有节点,进行加和,如果存在0节点,结束本次加和,开启新节点再次加和。(如下,但此代码非常不规范,只作为思维描述)

//代码思路。当然这么写肯定不规范public ListNode mergeNodes(ListNode head) {ListNode node = new ListNode();while (head.next != null) {while (head.next.val != 0) {head = head.next;node.val += head.val;}node.next = node;}return node;}

        注意,在链表中,node本身不断变化的 node.next = node,最终指向的,是它的尾节点,是不符合要求的。所以最好新建一个ListNode,next指向node,或者:两者同时指向一个对象。具体如下

(4)代码

class Solution9_9_1 {public ListNode mergeNodes(ListNode head) {ListNode node = new ListNode();ListNode result = new ListNode();result.next=node;//优化后:
//        ListNode result = new ListNode();
//        ListNode node =result;
//        ListNode node = dummy; 并不会改变 dummy 本身的值,
//        而是让 node 和 dummy 都引用同一个对象。
//        通过 node 修改对象的属性(例如 node.next),
//        dummy 也会“看到”这些修改,因为它们指向同一个对象。ListNode head1 = head.next;//去除头节点int sum = 0;//统计结果。while (head1 != null) {if (head1.val == 0)//创建新节点{node.next = new ListNode(sum);node = node.next;// 移动到下一个节点sum = 0;// 重置累加器} else {sum += head1.val;//累加}head1 = head1.next;//移动到下一个节点}
//        return node; 这里有个易错点,直接返回node,在循环中,
//        node本身不断变化 node = node.next,最终指向的,是它的尾节点,是不符合要求的。
//        所以最好新建一个ListNode,next指向node,return result.next.next;//因为我们写的,开头会默认两个0节点,所以两个next
//      优化后:
//      return result.next;}
}

(5)碎碎念

其实,还是说,对链表这种不太熟悉,有时总会忘记他循环的特性,直接用,老是报错。

 2024.9.10 困难  难度评分 2433

链接:2552. 统计上升四元组

(1)题目描述:

(2)示例

(3)分析

        题目越短,事儿越大。依据题目要求,这次给我们的实际上找一个:满足”波浪式“的四个元素:小小   大    小    大大,最大值在最右侧。很明显,最大值的存在必须在第3位之后,所以我们不妨拿出最大值。

        观察 “波浪式” 数据:2个数大小定后,再加一位定三元组,再加后定四元组。而这个过程是类似的,于是可以抽象出来:

(1)满足2元组【小,大】后,判断大和接下来值大小,

        ① 如果大,此前所有二元组皆可换为三元组,(指:大 > 接下来的值)

        ② 如果小,很难直接决定

(2)满足三元组【小小 大 小】后,判断大和接下来值大小

        ① 如果大,很难直接决定

        ② 如果小,二元组备选量+1,此前所有三元组皆可换为四元组

大家一定注意:题目中所有数字皆不同,并且我们发现,通过右侧和下一个值的比对,我们可以确定的,分别是对二元组、三元组的确定。但同时我么知道:每一个组得到皆有前一个获得,或间接决定。(这是我的一开始思路,但没写出来,直接复制灵神的了。)

(4)代码

class Solution {public long countQuadruplets(int[] nums) {long cnt4 = 0;int[] cnt3 = new int[nums.length];for (int l = 2; l < nums.length; l++) {// l从2开始,是为了算上开头三个就符合排序的// 外层循环:作为四元组中的第四个元素,遍历数组的每一个可能位置int cnt2 = 0;for (int j = 0; j < l; j++) {// 内层循环:j 从 0 开始到 l-1,//对于每一个 l,通过 j 遍历之前的元素,尝试找到符合条件的三元组 (i, j, k)。// cnt2:用于计数在当前循环中,满足 nums[i] < nums[k] 的二元组的数量。//每当发现一个这样的组合时,它将帮助更新 cnt3[j]。if (nums[j] < nums[l]) { // 3 < 4,当接下来的符合时,直接把全部的三元组的数量加和到,就是符合条件的四元组cnt4 += cnt3[j];// 把 j 当作 i,把 l 当作 k,现在 nums[i] < nums[k],即 1 < 2cnt2++;} else {// 如果 nums[j] > nums[l],则表示 j 可以成为四元组中第2大的元素,// 因此将 cnt2(当前符合 nums[i] < nums[k] 的二元组数量)累加到 cnt3[j] 中,表示形成了新的三元组。cnt3[j] += cnt2;}}}return cnt4;}
}

(5)碎碎念

有些抽象的……,花了非常多的时间。

 2024.9.11 中等  难度评分 2081

链接:2555. 两个线段获得的最多奖品

(1)题目描述:

(2)示例

(3)分析

        首先呢,做一个解释:x轴上放了一些奖品,现在把放奖品的坐标告诉我们了,并且是2个间段内获得奖品,那么:只要两个间段大于奖品区间大小,即可全部获得。

        接下来,逐步判断即可,因为给的是坐标,所以,差值不大于k,即可包揽。

        于是:prizePositions[i]-prizePositions[0]>k为临界点,此时最大获得为i个, 这是第一次判断,但判断的不只是以0来判断,换为标识符start ,最大获得为:i-start,但为了下一次循环,strat得++。那么,很显然i-start+1 为当此获得的最大个数(已经++了),我们需要一个值来存储它。最后,sum就由:sum本身或(i-start+1 + 和距他k单位统计的值 )的最大值来决定。

(4)代码

class Solution {public int maximizeWin(int[] prizePositions, int k) {int len=prizePositions.length;//做一个解释:x轴上放了一些奖品,现在把放奖品的坐标告诉我们了,并且是2个间段内获得奖品//那么:只要两个间段大于奖品区间大小,即可全部获得。if(2*k>prizePositions[len-1]-prizePositions[0]){return len;}//接下来,是逐步判断,可取得奖品的条件是:长度小于等于k内的,//因为给的是坐标,所以,差值即可,差值不大于k,即可包揽.int sum=0;int start=0;int[] getTotall=new int[len+1];for(int i=0;i<len;i++){// 于是:prizePositions[i]-prizePositions[0]>k为临界点,此时最大获得为i个,// 这是第一次判断,但判断的不只是以0来判断,换为标识符start ==》 最大获得为:i-start,但为了下一次循环,strat得++// 于是:i-start+1 为当此获得的最大个数,我们需要来存储它。getTotall就是,// 那么,sum就由:sum本身或(i-start+1 + 和距他k单位统计的值 )的最大值 来决定// start指定这是哪一次,while(prizePositions[i]-prizePositions[start]>k){start++;}sum = Math.max(sum,getTotall[start]+i-start+1);getTotall[i+1] = Math.max(getTotall[i],i-start+1);}return sum;}
}

(5)碎碎念

这几天,写的都有些折磨……

 2024.9.12 中等  难度评分 1843

链接:2576. 求出最多标记下标

(1)题目描述:

(2)示例

(3)分析

        根据题目:我们返回的并非是标注的下标,而是数目。涉及到大小比较,所以对数据进行排序比较好,排好序后,便可对其拆分区域。

         一个len长度的数组,最少比对len/2次。其中,最多表记数为len。

        我们举个例子:2 3 5 7 11 16,要想最大,就需要拆开划分一半低,一般高用于被比对。

        在比较时,很明显,最优的情况,第一位 和 第(len/2+1)位比对,然后依次判断。

(4)代码

class Solution {//我们返回的并非是标注的下标,而是数目。涉及到大小比较,所以对数据进行排序比较好public int maxNumOfMarkedIndices(int[] nums) {Arrays.sort(nums);int len=nums.length;int sum=0;// 一个len长度的数组,最少比对len/2次。其中,最多表记数为len//我们举个例子:2 3 5 7 11 16,要想最大,就需要拆开划分一半低,一般高用于被比对。//在比较时,很明显,最优的情况,第一位 和 第(len/2+1)位比对,然后依次判断。int right= len/2;int left = 0;while (left <len/2 && right<len) {if (2*nums[left]<=nums[right]){sum+=2;left++;}                right++;}return sum;}
}

(5)碎碎念

这个还行,没费太多时间。

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

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

相关文章

【iOS】UIViewController的生命周期

UIViewController的生命周期 文章目录 UIViewController的生命周期前言UIViewController的一个结构UIViewController的函数的执行顺序运行代码viewWillAppear && viewDidAppear多个视图控制器跳转时的生命周期pushpresent 小结 前言 之前对于有关于UIViewControlller的…

cesium.js 入门到精通(3)

天空盒子的设置 目前的地球背景 是 地图的cesium 我们想换成自己背景 // 设置天空盒skyBox: new Cesium.SkyBox({sources: {positiveX: "./texture/sky/px.jpg",negativeX: "./texture/sky/nx.jpg",positiveY: "./texture/sky/ny.jpg",negativ…

如何构建高效快速的数据同步策略方案

在数据化的商业环境中&#xff0c;实现数据的实时同步不仅是提升企业内部协作效率的关键&#xff0c;更是确保业务决策精准性和时效性的核心要素。通过确保数据的一致性和最新性&#xff0c;企业能够实现跨部门的无缝协作&#xff0c;从而为业务流程的顺畅运作和快速响应市场变…

Linux系统部署SmartKG(知识图谱安装)

基本要求 #docker需要高版本 Docker version 20.10.14, build a224086docker 20.10.14离线安装 SmartKG官网 官方详细文档 下载部署包 SmartKG官网 准备部署 #上传到服务器 [roottest-server01 opt]# ll SmartKG-master.zip -rw-r--r-- 1 root root 79708691 Sep 11 17:4…

k8s环境搭建(续)

查看节点信息并做快照 kubectl get nodes 将components.yml文件上传到master主机 创建nginx&#xff0c;会在添加一个新的pod kubectl run nginx --imagesnginx:latest 查看nginx的pod信息 [rootk8s-master ~]# kubectl get po -Aowide|grep nginx 出现错误&#xff0c;查…

跨越技术壁垒:EasyCVR为何选择支持FMP4格式,重塑视频汇聚平台标准

随着物联网、大数据、云计算等技术的飞速发展&#xff0c;视频监控系统已经从传统的安防监控扩展到智慧城市、智能交通、工业制造等多个领域。视频流格式作为视频数据传输与存储的基础&#xff0c;其兼容性与效率直接影响到整个视频监控系统的性能。 在众多视频流格式中&#…

吴牧野与他的家首登国际家居杂志《安邸AD》秋季封面

国际钢琴艺术家吴牧野登国际一线家居杂志《安邸AD》金九秋季封面&#xff0c;首次在自己的私宅接受媒体拍摄访问&#xff0c;他的家也第一次曝光在公众面前。凭借深刻的音乐性、高超的琴技和高级感的气质&#xff0c;吴牧野打破了中国观众对钢琴家炫技派的刻板印象&#xff0c;…

携手科大讯飞丨云衔科技为企业提供全栈AI技术解决方案

作为智能时代的核心驱动力&#xff0c;人工智能不仅重塑了传统行业的面貌&#xff0c;更开辟了全新的经济增长点。科大讯飞以其深厚的技术底蕴和创新能力&#xff0c;持续引领着人工智能领域的发展潮流。云衔科技作为科大讯飞开放平台的AI技术产品线合作伙伴代理商&#xff0c;…

YOLOV8实现小目标检测

YOLOV8小目标检测 前言&#xff1a;&#xff1a; yolo版出现很多&#xff0c;基本大同小异 但是这些差异让我们考虑在实验中使用哪个版本会比较好&#xff01; 在对小目标检测的过程中&#xff0c;yolov7相比yolov8性能更加好。 如果我们还是想使用yolov8&#xff0c;也是可以实…

QImage、cv::Mat 与 HalconCpp::HObject 之间的转换

在机器视觉应用中&#xff0c;不同的图像处理库和框架常使用不同的数据结构来表示图像。常用的库包括 Qt 的 QImage、OpenCV 的 cv::Mat 以及 Halcon 的 HObject。为了在这些库之间实现无缝的数据传递和处理&#xff0c;图像格式的转换成为必不可少的环节。本文将详细介绍如何在…

再次进阶 舞台王者 第八季完美童模全球赛形象大使【许雅雯】赛场秀场超燃合集!

7月20-23日&#xff0c;2024第八季完美童模全球总决赛在青岛圆满落幕。在盛大的颁奖典礼上&#xff0c;一位才能出众的少女——许雅雯&#xff0c;迎来了她舞台生涯的璀璨时刻。 形象大使——许雅雯&#xff0c;以璀璨童星之姿&#xff0c;优雅地踏上完美童模盛宴的绚丽舞台&am…

玉米种子质量检测系统源码分享

玉米种子质量检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

掌握“问一问”策略,视频号流量轻松实现质的飞跃!

掌握“问一问”策略&#xff0c;视频号流量轻松实现质的飞跃&#xff01; 视频号新流量入口&#xff0c;微信问一问。如何玩转问一问功能&#xff0c;手把手操作教学。#视频号#微信#问一问#短视频#直播 市面上还有这么牛逼的一个流量隐藏入口&#xff0c;先看一下数据&#x…

微信自动回复设置真嘎嘎好用!

无论是商户、个人品牌还是普通用户&#xff0c;及时回应朋友和客户的信息至关重要。然而&#xff0c;手动一一回复既耗时又容易遗漏&#xff0c;这时&#xff0c;微信的自动回复功能就显得尤为重要。 今天&#xff0c;就教大家一招——通过个微管理系统&#xff0c;实现微信自…

2024年最新软件测试学习路线图(从入门到精通)

六维全息课程注重综合能力培养&#xff0c;从入学到职后一站式服务测试开发人才。2024年最新软件测试学习路线图&#xff0c;从入门到精通一应俱全。 9阶段专业课11大专项测试项目 适应互联网企业测试开发需求。 对于想入行学软件测试的新手来说&#xff0c;首先就需要一个高效…

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

在pycharm终端中运行pip命令安装模块时,出现了“你要如何打开这个文件”弹出窗口,是什么状况?

这种情况发生在Windows系统上&#xff0c;当在PyCharm终端中运行pip命令安装模块时&#xff0c;如果系统无法确定要使用哪个程序打开该文件&#xff0c;就会出现“你要如何打开这个文件”弹出窗口。 解决方法是&#xff1a; 选择“查找一个应用于此文件”的选项。在弹出的窗口…

Java语法1

注释 单行注释// 多行/* */ 字面量 同C \n \t不需要加单引号 数据的存储 十进制转二进制 除2取余法 数据在计算机中的最小存储单位字节1B8b KB MB GB TB 相邻的转换 2的10次方等于1024 字符存进去则存ASSIC编码对应的数,比如49对应’1’,65对应’A’,97对应’a’ 图片,声音…

电脑录屏不求人,9月必备免费录屏软件推荐!苹果电脑可用!

在当今这个信息爆炸的时代&#xff0c;电脑录屏软件已经成为了我们日常工作和生活中不可或缺的工具。无论是制作教学视频、录制在线课程、游戏直播&#xff0c;还是创建产品演示&#xff0c;一个好的录屏软件都能帮助我们更高效地完成任务。市场上的录屏软件琳琅满目&#xff0…

Kubernetes精讲之网络通信与调度

目录 一 k8s网络通信 1.1 k8s通信整体架构 1.2 flannel网络插件 1.2.1 flannel跨主机通信原理 1.2.2 flannel支持的后端模式 1.3 calico网络插件 1.3.1 calico简介&#xff1a; 1.3.2 calico网络架构 1.3.3 部署calico 二 k8s调度&#xff08;Scheduling&#xff09;…