Leetcode热题100||150:链表

news/2024/9/24 3:24:15/

206、反转链表

struct ListNode* reverseList(struct ListNode* head) {struct ListNode* prev = NULL;struct ListNode* curr = head;while (curr) {struct ListNode* next = curr->next;curr->next = prev;prev = curr;curr = next;}return prev;
}

234、回文链表

经典的找中点+反转

struct ListNode* reverseList(struct ListNode* head) {struct ListNode* prev = NULL;struct ListNode* curr = head;while (curr != NULL) {struct ListNode* nextTemp = curr->next;curr->next = prev;prev = curr;curr = nextTemp;}return prev;
}struct ListNode* endOfFirstHalf(struct ListNode* head) {struct ListNode* fast = head;struct ListNode* slow = head;while (fast->next != NULL && fast->next->next != NULL) {fast = fast->next->next;slow = slow->next;}return slow;
}bool isPalindrome(struct ListNode* head) {if (head == NULL) {return true;}// 找到前半部分链表的尾节点并反转后半部分链表struct ListNode* firstHalfEnd = endOfFirstHalf(head);struct ListNode* secondHalfStart = reverseList(firstHalfEnd->next);// 判断是否回文struct ListNode* p1 = head;struct ListNode* p2 = secondHalfStart;bool result = true;while (result && p2 != NULL) {if (p1->val != p2->val) {result = false;}p1 = p1->next;p2 = p2->next;}// 还原链表并返回结果firstHalfEnd->next = reverseList(secondHalfStart);return result;
}作者:力扣官方题解
链接:https://leetcode.cn/problems/palindrome-linked-list/solutions/457059/hui-wen-lian-biao-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

61.旋转链表 

61. 旋转链表icon-default.png?t=N7T8https://leetcode.cn/problems/rotate-list/

给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。

分析:把他们连成一个环,再在合适位置切开!

struct ListNode* rotateRight(struct ListNode* head, int k) {if (k == 0 || head == NULL || head->next == NULL) {//极端情况的排除——一些不需要翻转的return head;}int n = 1;struct ListNode* iter = head;while (iter->next != NULL) {iter = iter->next;n++;}int add = n - k % n;//简化循环次数if (add == n) {return head;}iter->next = head;while (add--) {iter = iter->next;}struct ListNode* ret = iter->next;iter->next = NULL;return ret;
}

**还有一些涉及排序的暂时没做


http://www.ppmy.cn/news/1507384.html

相关文章

C# 中使用 `async` 和 `await` 时,需要注意点

在 C# 中使用 async 和 await 时,有一些关键点需要注意: 异步方法命名: 通常建议将异步方法的名称以 Async 结尾,以便清楚地表明方法是异步的。例如:GetDataAsync。 async 关键字: 在方法签名中使用 async…

Arco Design:引领未来的Vue 3创意先锋,一键开启高效与美感并重的Web开发之旅!

Arco Design 是一个基于 Vue 3 的 UI 框架,它提供了丰富的组件和样式,可以帮助开发者快速构建高质量的 Web 应用程序。以下是 Arco Design 的一些详细特点: 完整的设计系统:Arco Design 提供了一套完整的设计系统,包括…

daiqile漏洞浮现

目录 一、环境准备 1.将daiqile下载到phpstudy的www目录下 2.创建数据库ctf、插入数据 3.测试数据库是否创建完成 4.测试网站 二、联合查询注入测试 1.确定注入点 2.识别数据库类型 3.枚举数据库名称 4.列出单个数据库 5.获取表名 6.获取表中的列名 7.提取敏感数据…

怎样将matplotlib生成的图形通过Flask输出到页面

话不多说,看效果 实现方法: 1)xlrd 1.2.0 读取xls,xlsx 转pandas.DataFrame,matplotlib呈现 import pandas as pd import matplotlib.pyplot as plt import numpy as np from utils.xlrd_ExcelUtil import ExcelUtil import config import os #---------以下添加临时excel表-…

MySQL —— 表的设计

表的设计 在设计表之前,我们需要从需求中获得实体(实体就是一张张表),实体的属性就是表中的字段(列),然后确定实体与实体之间的关系,最后使用 SQL 语句去创建具体的表 在设计表的时…

基于jsp的宠物领养与服务管理系统(源码+论文+部署讲解等)

博主介绍:✌全网粉丝10W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术栈介绍:我是程序员阿龙&#xff…

基于贪心算法的路径优化

贪心算法原理 ‌贪心算法的核心原理是在每一步选择中都采取在当前看来最好的选择,以期达到全局最优解。 这种算法不追求整体最优解,而是通过局部最优的选择逐步逼近全局最优解。贪心算法的关键在于构造合适的贪心策略,这种策略需要满足两个基本要素:贪婪选择属性和‌最优子…

单片机 flash 擦写(先擦除 后写任意字节)

很多情况下,我们写扇区病不一定512对齐,甚至有的情况下跨扇区读写,为了满足这个需求,进行判断先擦除再写,并且不影响之前扇区的数据 擦除再写: #define FLASH_TOTAL 0x50000 // 共320K #define BLOCK…