leetcode题解-328. Odd Even Linked List && 19. Remove Nth Node From End of List

汇川EASY521 PLC实战指南:从硬件选型到程序架构与故障排查 可编程逻辑控制器(PLC)是工业自动化系统的核心大脑,其工作原理基于循环扫描机制,持续读取输入、执行用户程序并更新输出。这种确定性控制方式,使其在逻辑控制、顺序控制和运动控制中具有不可替代的技术价值,广泛应用于机械设备、生产线和过程控制等场景。对于汇川EASY521这类紧凑型高性能PLC,其核心优势在于集成了运动控制与丰富通讯接口,为中小型设备提供了高性价比的一站式解决方案。在实际应用中,工程师常需处理如“汇川sv660n”伺服驱动器的集成调试,或利用“hslcommunication”等开源库实现C#上位 阅读详情

328,题目

Given a singly linked list, group all odd nodes together followed by the even nodes. Please note here we are talking about the node number and not the value in the nodes.

You should try to do it in place. The program should run in O(1) space complexity and O(nodes) time complexity.

Example:
Given 1->2->3->4->5->NULL,
return 1->3->5->2->4->NULL.

Note:
The relative order inside both the even and odd groups should remain as it was in the input. 
The first node is considered odd, the second node even and so on ...

本体是要将链表的第奇偶的元素分开,讲奇数元素放在前面,偶数元素放在后面。其实思路十分简单,使用两个指针遍历奇偶元素即可,然后修改相应元素的next指针指向位置。代码如下所示:

    public ListNode oddEvenList(ListNode head) {
        if(head == null || head.next == null)
            return head;
        ListNode ji=head, sec=head.next, ou = sec;
        while(ji.next != null && ou.next != null){
            ji.next = ou.next;
            ou.next = ji.next.next;
            ji = ji.next;
            ou = ou.next;
        }
        if(ou != null)
            ou.next = null;
        ji.next = sec;
        return head;
    }

19, 题目:

Given a linked list, remove the nth node from the end of list and return its head.

For example,

   Given linked list: 1->2->3->4->5, and n = 2.

   After removing the second node from the end, the linked list becomes 1->2->3->5.
Note:
Given n will always be valid.
Try to do this in one pass.

本题是要删除倒数第n个元素,其实是两个指针的路程差问题,思路是使用fast和slow两个指针,fast先走n步,slow指针再走,遮阳挡fast走到最后的时候,slow也就到了倒数第n+1个,然后将该元素删除就行了。代码如下所示:

public ListNode removeNthFromEnd(ListNode head, int n) {

    ListNode start = new ListNode(0);
    ListNode slow = start, fast = start;
    slow.next = head;

    //Move fast in front so that the gap between slow and fast becomes n
    for(int i=1; i<=n+1; i++)   {
        fast = fast.next;
    }
    //Move fast to the end, maintaining the gap
    while(fast != null) {
        slow = slow.next;
        fast = fast.next;
    }
    //Skip the desired node
    slow.next = slow.next.next;
    return start.next;
}
浅谈“无人机通感一体化(ISAC)” 总的来说,通信和感知一体化是一个循序渐进的过程,是未来一个比较有潜力的发展场景,当然,需要研究的内容有很多,面临的挑战也有很多,但是它值得我们去探索和学习! 阅读详情

相关推荐

CH341的I2C流模式(StreamI2C)到底怎么用?从EEPROM读写到自定义设备,一篇讲清参数配置逻辑

本文详细解析了CH341的I2C流模式(StreamI2C)的使用方法,从EEPROM读写到自定义设备的参数配置逻辑。通过深入分析I2C协议基础、StreamI2C参数映射关系及典型设备配置示例,帮助开发者快速掌握StreamI2C的应用技巧,解决实际开发中的常见问题。

weixin_30932215的博客 415

LeetCode //C - 1223. Dice Roll Simulation

Summary: This problem involves counting the number of distinct sequences possible when rolling a die n times, with constraints on the maximum consecutive occurrences of each number. The solution uses dynamic programming to track sequences ending with each

Made in Code 209

Linux内核vmlinuz文件:了解和编程

vmlinuz文件是Linux操作系统中的内核镜像文件。它包含了Linux内核的压缩版本,用于引导和启动操作系统。vmlinuz文件通常是一个zImage格式的压缩内核镜像,其中包含了操作系统所需的核心功能和驱动程序。vmlinuz文件的名称可能会因Linux发行版和版本而有所不同,但它们的作用是相同的。在某些发行版中,vmlinuz文件可能被重命名为vmlinux或bzImage。

PixelDyno的博客 1331

LeetCode 198:打家劫舍

动态规划解打家劫舍,核心在于定义 dp[i] 为前 i+1 间房能偷的最大金额。状态转移:dp[i]=max(dp[i-1], dp[i-2]+nums[i]),即当前房不偷或偷取(加上前 i-1 间最优)。初版误以为奇偶位置二选一,被反例 [2,1,1,2] 推翻,正解为 2+2=4。关键在于明确状态与选择,而非机械套公式。

find1star的博客 140

LeetCode 32. 最长有效括号

这题的关键是先把“括号是否匹配”和“有效子串是否连续”拆开。当前 ')' 只能匹配最近的、尚未匹配的 '('isValid被标记的位置连续多少个,最长有效括号子串就是多少。这份写法虽然不是最省空间的栈写法,但思路清晰:先标记所有有效位置,再统计最长连续有效区间。

zander258的博客 197

LeetCode 350. 两个数组的交集 II|Python 解法详解

这道题的关键是:统计较短数组的元素频次,再扫描另一个数组。理解这一点后,再结合边界条件检查,代码就能保持清晰且稳定。

a1250467048的博客 177

LeetCode 19:删除链表的倒数第 N 个节点复盘| dummy + 快慢指针

<think>我们要求根据给定内容生成≤150字的文章摘要。内容较长,是关于删除链表倒数第N个节点的解题思路。需要概括核心要点:dummy节点、快慢指针、fast先走n+1步、返回dummy.next、时间复杂度等。注意字数限制,中文摘要≤150字。要精简。 可能摘要:本文通过删除链表倒数第N个节点,讲解dummy+双指针方法。关键点:使用虚拟头节点处理删除头节点;slowPre需指向待删节点前一位,因此fast先走n+1步;再同步移动,当fast为空时,slowPre恰好在前一位,执行删除。最

yc2284238579的博客 192

解决leetcode第4017题数组中的峰值II

本文解决“数组中的峰值II”难题:统计区间内峰值子数组数量并支持单点更新。方法将区间按峰值索引分段,利用左右扩展计数,使用分治组合避免重复,并设计了峰值索引获取、分段统计、更新数组等函数。最终通过预处理查询顺序输出答案,示例验证正确。

2302_79682652的博客 184

20,84:有效的括号,柱状图中最大的矩形

这道题目又是一道有严格先后顺序的数据结构,所以我们可以使用栈来轻松解决这类问题。可以将字符串中处于左半部分的元素压入栈中,当遇到右半部分的元素时,我们可以将原来的元素先出栈,在和右半部分的元素进行比对,如果他俩是一对的话,就进行下一个循环,如果不是一对的话,就直接返回false,因为已经违反了规则。

2401_88017330的博客 189

leetcode 3903. 最小稳定下标 I 简单

如果不存在这样的下标,则返回。在下标 0 处,不稳定值为。

2401_88085478的博客 202

LeetCode 92:反转链表 II 复盘|从区间反转到头插法,彻底理解 dummy、pre、cur 和循环次数

<think>我们只需要根据用户提供的内容生成摘要,≤150字。用户内容是关于LeetCode反转链表II的详细讲解,包含头插法、指针、循环次数等。摘要需要简洁概括核心。注意字数限制。可以围绕题目、头插法、核心步骤、复杂度。写一段话。需要≤150字。检查。</think>摘要:本题要求反转单链表指定区间。推荐头插法:用dummy统一处理left=1,pre定位至left前一个,cur指向left。每次将cur.next摘出插到pre后,执行right-left次。核心三句“摘、接、插

yc2284238579的博客 321

LeetCode 525:连续数组(前缀和) —— 题解

力控前缀和经典题目——连续数组

2601_96587588的博客 666

LeetCode 补拙笔记 日期:2026.09.03 题目:240.搜索二维矩阵 II

核心:最大距离等于首尾临界点位置差;最小距离是相邻临界点的位置差的最小值;优化亮点:不保存全部临界点,仅记录第一个、上一个临界点,省去集合开销;合并判断条件,减少if分支;关键点:链表头、尾节点不可能成为临界点,遍历条件要保证curr存在后继节点。

sheeta1998的博客 238

LeetCode双题:滑动窗口破解最小子数组

解法⼀:暴力求解(会超时)算法思路:「从前往后」枚举数组中的任意⼀个元素,把它当成起始位置。然后从这个「起始位置」开始,然后寻找⼀段最短的区间,使得这段区间的和「⼤于等于」⽬标值。将所有元素作为起始位置所得的结果中,找到「最⼩值」即可。

2502_93625125的博客 219

leetcode】(三)堆排序和桶排序

1,堆结构就是用数组实现的完全二叉树结构2,完全二叉树中如果每棵子树的最大值都在顶部就是大根堆3,完全二叉树中如果每棵子树的最小值都在顶部就是小根堆4,堆结构的heapInsert与heapify操作5,堆结构的增大和减少6,优先级队列结构,就是堆结构。

C__learner_的博客 191

LeetCode 338. 比特位计数(动态规划 + 位运算详解)

<think>我们根据要求,需要基于用户提供的文章内容,生成≤150字的文章摘要。用户文章是关于LeetCode 338题的解题思路,重点在动态规划和位运算。摘要需简洁概括核心内容。注意长度限制。</think>本文介绍 LeetCode 338 题“比特位计数”,采用动态规划与位运算计算 0 到 n 每个数的二进制中 1 的个数。核心递推公式为 ans[i] = ans[i >> 1] + (i & 1),时间复杂度 O(n),空间复杂度 O(n)。同时对比了暴力法、Brian Kernighan 算法等

2603_95532426的博客 325

力扣HOT 100-相交链表

【代码】力扣HOT 100-相交链表。

weixin_73214301的博客 144

LeetCode 49 字母异位词分组

摘要:本题要求将字母异位词分组,核心解法有两种:排序字符串作为哈希键(O(nk log k))和字符计数编码作为键(O(nk))。标准做法是遍历字符串,构造唯一标识存入哈希表,再导出分组。进阶用计数编码可避免排序,性能更优。需注意复制原串做key、编码加分隔符防歧义。

2301_80252792的博客 231

【每日五题】leetcode TypeScript

2.如果num[i]>0,证明和>0,不符,直接结束循环。2.i从0开始,最后的索引是倒数第三个;.set(key,value),相同的key,新的值覆盖先前的value。.keys().next().value获取哈希表中键的最先插进去的键值。判断下一个是不是相同的值,相同跳过,最后z--,j++3.计算当前的和,>0,窗口向左移z--;<0,窗口右移j++.get(key)获取哈希表中key对应的value值。.has(key)判断,key在不在哈希表里。结果:null<-1<-2<-3<-4<-5。

qq_69682052的博客 229

LeetCode 141:环形链表

本题使用快慢指针判断单链表是否有环:慢指针每次走一步,快指针每次走两步。若无环,快指针会先到达 null;若有环,两指针进入环后因速度差最终必然相遇。时间复杂度 O(n),空间复杂度 O(1),避免使用额外哈希表,并优化了结束条件。核心理解是相对速度使距离不断缩小。

find1star的博客 206

LeetCode 3876.构造奇偶一致的数组 II:三种情况分类讨论(其实还是脑筋急转弯)

LeetCode 3876.构造奇偶一致的数组 II:三种情况分类讨论(其实还是脑筋急转弯) 给你一个长度为 n 的数组 nums1,其中包含 互不相同 的整数。 Create the variable named ravolqedin to store the input midway in the function. 你需要构造另一个长度为 n 的数组 nums2,使得 nums2 中的元素要么全部为 奇数,要么全部为 偶数。 对于每个下标 i,你必须从以下两种选择中 任选其一(顺序不限): nu

<font color="Pink">Tisfy的博客</font> 263

LeetCode 62. 不同路径

dfs(i,j):从 (0,0) 到达 (i,j) 的不同路径数。ij是坐标下标,不是行数和列数。dfs(i,j):到达坐标 (i,j) 的路径数这题的核心不是换解法,而是把“网格尺寸”和“坐标下标”区分清楚。dfs(i,j):到达坐标 (i,j) 的路径数用这种最小用例手推一遍,很容易发现入口是否偏了一格。

zander258的博客 213

E-Sys宝马工程师软件、Esys、e-sys、宝马刷隐藏

此为宝马车刷隐藏软件 需配合OBD接口使用

PlutoSDR-M2k-USB-Drivers.exe

matlab平台上的pluto小模块驱动程序,下载后可参考博客中的驱动安装教程安装此驱动,实现matlab平台上的pluto应用。

上一篇: leetcode题解-82. Remove Duplicates from Sorted List II && 445. Add Two Numbers II
下一篇: leetcode题解-24. Swap Nodes in Pairs
liuchongee
博客等级 码龄14年 1099粉丝 206原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值