【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.mzph.cn/bicheng/53979.shtml

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

相关文章

Pandas读取某列、某行数据——loc、iloc区别

loc&#xff1a;通过行、列的名称或标签来索引 iloc&#xff1a;通过行、列的索引位置来寻找数据 首先&#xff0c;我们先创建一个DataFrame生成数据 import pandas as pddata {a:[1,2,3,4,5],b:[6,7,8,9,10],c:[11,12,13,14,15] } data pd.DataFrame(data) print(data) 运行…

工具、环境等其他小问题归纳

此篇文章内容会不定期更新&#xff0c;仅作为学习过程中的笔记记录 一、查询Windows 10环境下python版本与安装路径 若电脑成功安装了python环境&#xff0c;不小心忘了版本。 I、查询版本 1、cmd窗口快捷查询 Win R 输入cmd 进入窗口&#xff1b; 直接输入 python --version …

[数据集][目标检测]血细胞检测数据集VOC+YOLO格式2757张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2757 标注数量(xml文件个数)&#xff1a;2757 标注数量(txt文件个数)&#xff1a;2757 标注…

关于武汉芯景科技有限公司的IIC电平转换芯片XJ9517开发指南(兼容PCF9517)

一、芯片引脚介绍 1.芯片引脚 2.引脚描述 二、系统结构图 三、功能描述 1.电平转换 2.芯片使能/失能 EN 引脚为高电平有效&#xff0c;内部上拉至 VCC&#xff08;B&#xff09;&#xff0c;允许用户选择中继器何时有效。这可用于在上电时隔离行为不良的从机&#xff0c;直到…

4052A/4052B/4052C/4052D/4052E/4052F/4052G /4052H信号/频谱分析仪

4052A/4052B/4052C/4052D/4052E/4052F/4052G /4052H信号/频谱分析仪 苏州新利通 Ceyear 4052具备出色的测试动态范围、相位噪声、幅度精度和测试速度&#xff0c;具备频谱分析、I/Q分析、实时频谱分析、瞬态分析、矢量信号分析、脉冲分析、音频分析等丰富的测试功能。 Ceyear…

OpenAI发布o1预览模型:推理能力更强可达理科博士生水准

近日OpenAI宣布推出了新一代 AI 模型系列 OpenAI o1&#xff0c;按照官方技术博客说法&#xff0c;o1 在推理能力上代表了人工智能最强的水平。 那究竟是怎么一回事呢&#xff1f; OpenAI CEO Sam Altman 表示&#xff1a;o1 系列的推出代表了 AI 能力的新起点&#xff0c;能…

240909-ChuanhuChatGPT集成Ollama的环境配置

A. 最终效果 B. 需求文件 requirements.txt (至少需要安装这个&#xff0c;具体参见官网)requirements_advanced.txt &#xff08;如果安装了Ollama&#xff0c;并且可以进行对话&#xff0c;可以不需要安装&#xff0c;具体参见官网&#xff09;requirements_succcess.txt&am…

gin配置swagger文档

一、基本准备工作 1、安装依赖包 go get -u github.com/swaggo/swag/cmd/swag go get -u github.com/swaggo/gin-swagger go get -u github.com/swaggo/files2、在根目录上配置swagger的路由文件 //2.初始化路由router : initialize.Routers()// 配置swaggerdocs.SwaggerInfo…

微服务杂谈

几个概念 还是第一次听说Spring Cloud Alibaba &#xff0c;真是孤陋寡闻了&#xff0c;以前只知道 SpringCloud 是为了搭建微服务的&#xff0c;spring boot 则是快速创建一个项目&#xff0c;也可以是一个微服务 。那么SpringCloud 和 Spring boot 有什么区别呢&#xff1f;S…

Unity for Android使用蓝牙低功耗Bluetooth LE

Unity2021.3.35f1 插件&#xff1a;Bluetooth LE for iOS and Android v2.3.unitypackage 1、将插件资源包导入unity中 2.修改插件中的AndroidManifest文件 <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schem…

系统优化工具 | PC Cleaner v9.7.0.3 绿色版

PC Cleaner是一款功能强大的电脑清理和优化工具&#xff0c;旨在通过清理系统垃圾文件、解除恶意软件和优化系统性能来提高计算机的运行效率。该软件提供了多种功能&#xff0c;可以帮助用户维护和提升计算机的整体表现。 PC Cleaner 支持 Windows 7 及以上操作系统&#xff0…

Qt使用绿色pdf阅读器打开文件

1.下载SumatraPDF 2.设置 3.代码 void MainWindow::on_pushButton_clicked() {QProcess *process new QProcess();QString filePath "C:\\Users\\jude\\Desktop\\su\\11.pdf";QString sumatraPath "C:\\Users\\jude\\Desktop\\su\\SumatraPDF-3.5.2-64.exe&q…

电瓶车火灾频发背后的隐忧

近年来&#xff0c;电瓶车火灾事件频发&#xff0c;不仅严重威胁着人民群众的生命财产安全&#xff0c;也给社会带来了极大的安全隐患。从城市街道到居民小区&#xff0c;电瓶车火灾的阴影无处不在&#xff0c;如何有效防范与自救成为了全社会关注的焦点。 一、电瓶车火灾频发…

linux_L1_linux重启服务器

使用putty登录到linux服务器切换到管理员账号 sudo -s重启命令 reboot

钾盐矿开采与加工过程中的机电设备选型及管理指南

创作不易&#xff0c;您的打赏、关注、点赞、收藏和转发是我坚持下去的动力&#xff01; 在钾盐矿的开采和加工过程中&#xff0c;需要使用多种机电设备以确保生产的顺利进行。这些设备主要用于矿石开采、破碎、运输、选矿以及矿物产品的深加工等过程。以下是钾盐矿常用的一些机…

Leetcode 字母异位词分组

这道题目的意思就是&#xff1a;把包含字母字符相同的单词分到同一组。 算法思路&#xff1a; 使用哈希表来解决。 首先将每个字符串进行排序&#xff0c;将排序之后的字符串作为 key&#xff0c;然后将用 key 所对应的异位词组 作为value。然后我们使用 std::pair 来遍历 键…

AI prompt(提示词)

# 好用的用于学习的AI提示词 ## 费曼学习法 请使用费曼学习法&#xff0c;用简单的语言解释&#xff08;量子力学&#xff09;是什么&#xff0c;并提供一个简单的例子来说明它如何应用 ## 帕累托法则&#xff08;80/20原则&#xff09; 将&#xff08;量子力学&#xff09;最…

基于SSM的大学生心理健康服务平台的设计与实现---附源码75713

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3论文结构与章节安排 2 相关技术介绍 2.1 SSM框架 2.2 Java语言 2.3 MySQL数据库 3系统分析 3.1 可行性分析 3.2 系统功能分析 3.3 系统用例分析 3.4系统流程分析 3.4.1 用户登录流程 3.4.2 数据删除流程 4 系…

P3565 [POI2014] HOT-Hotels

~~~~~ P3565 [POI2014] HOT-Hotels ~~~~~ 总题单链接 ~~~~~ 2024.9.10&#xff1a;DP方程有问题&#xff0c;已修改&#xff0c;同时更新了长链剖分优化版本。 思路 ~~~~~ 设 g [ u ] [ i ] g[u][i] g[u][i] 表示在 u u u 的子树内&#xff0c;距离 u u u 为 i i i 的点的…

设计模式-行为型模式-访问者模式

访问者模式难以实现&#xff0c;且应用该模式可能会导致代码可读性变差&#xff0c;可维护性变差&#xff0c;除非必要&#xff0c;不建议使用&#xff1b; 1.访问者模式定义 允许在运行时将一个或多个操作应用于一组对象&#xff0c;将操作与对象结构分离&#xff1b; 访问者…