当前位置: 首页 > news >正文

做网站分辨率多少南昌seo网站排名

做网站分辨率多少,南昌seo网站排名,国内营销网络途径困难,做照片的网站目录 一、回文链表 二、 重排链表 三、旋转链表 一、回文链表 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head [1,2,2,1] 输…

目录

一、回文链表

二、 重排链表

三、旋转链表



一、回文链表

给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false

示例 1

 输入:head = [1,2,2,1]

输出:true

示例 2

 输入:head = [1,2]

输出:false

提示

  • 链表中节点数目在范围[1, 10^5]

  • 0 <= Node.val <= 9

进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?

代码实现

struct ListNode* middleNode(struct ListNode* head)
{struct ListNode* slow = head;struct ListNode* fast = head;while (fast != NULL && fast->next != NULL){slow = slow->next;fast = fast->next->next;}return slow;
}
​
struct ListNode* reverseList(struct ListNode* head)
{struct ListNode* pre = NULL;struct ListNode* cur = head;while (cur != NULL){struct ListNode* after = cur->next;cur->next = pre;pre = cur;cur = after;}return pre;
}
​
bool isPalindrome(struct ListNode* head)
{// 1. 找到中间结点,如果有两个中间结点,则找到第二个中间结点struct ListNode* mid = middleNode(head);// 2. 从中间结点开始,对后半段进行反转struct ListNode* rightHead = reverseList(mid);// 3. 进行前半段和后半段的比较struct ListNode* leftCur = head;struct ListNode* rightCur = rightHead;while (rightCur != NULL){if (leftCur->val != rightCur->val){return false;}leftCur = leftCur->next;rightCur = rightCur->next;}return true;
}

回文结构是一个生物学名词。双链 DNA 中含有的两个结构相同、方向相反的序列称为回文结构,每条单链以任一方向阅读时都与另一条链以相反方向阅读时的序列是一致的

palindrome n. 回文结构;回文序列 ==> 牛津:a word or phrase that reads the same backwards as forwards, for example madam.


二、 重排链表

给定一个单链表 L 的头节点 head ,单链表 L 表示为:

L0 → L1 → … → Ln - 1 → Ln

请将其重新排列后变为:

L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …

不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例 1

输入:head = [1,2,3,4]
输出:[1,4,2,3] 

示例 2

 输入:head = [1,2,3,4,5]

输出:[1,5,2,4,3]

提示

  • 链表的长度范围为 [1, 5 * 10^4]

  • 1 <= node.val <= 1000

代码实现

struct ListNode* middleNode(struct ListNode* head)
{struct ListNode* slow = head;struct ListNode* fast = head;while (fast && fast->next){slow = slow->next;fast = fast->next->next;}return slow;
}
​
struct ListNode* reverseList(struct ListNode* head)
{struct ListNode* pre = NULL;struct ListNode* cur = head;while (cur != NULL){struct ListNode* after = cur->next;cur->next = pre;pre = cur;cur = after;}return pre;
}
​
void reorderList(struct ListNode* head)
{// 1. 找到中间结点,如果有两个中间结点,则找到第二个中间结点struct ListNode* mid = middleNode(head);// 2. 从中间结点开始,对后半段进行反转struct ListNode* rightHead = reverseList(mid);// 3. 重排链表struct ListNode* leftCur = head;struct ListNode* rightCur = rightHead;while (rightCur->next != NULL){struct ListNode* leftAfter = leftCur->next;struct ListNode* rightAfter = rightCur->next;leftCur->next = rightCur;rightCur->next = leftAfter;leftCur = leftAfter;rightCur = rightAfter;}
}

图解示例二

 

三、旋转链表

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

示例 1

 输入:head = [1,2,3,4,5], k = 2

输出:[4,5,1,2,3]

示例 2

 输入:head = [0,1,2], k = 4

输出:[2,0,1]

提示

  • 链表中节点的数目在范围 [0, 500]

  • -100 <= Node.val <= 100

  • 0 <= k <= 2 * 109

代码实现

struct ListNode* rotateRight(struct ListNode* head, int k)
{if (head == NULL){return NULL;}// 1. 找到链表的尾结点,并计算它的长度struct ListNode* tail = head;int len = 1;while (tail->next != NULL){++len;tail = tail->next;}// 2. 找到倒数第 (k % len + 1) 个结点k %= len;if (k == 0){return head;}struct ListNode* pre = head;for (int i = 0; i < len - k - 1; ++i){pre = pre->next;}// 3. 旋转链表tail->next = head;  // (1)head = pre->next;  // (2)pre->next = NULL;  // (3)return head;
}
http://www.yayakq.cn/news/219565/

相关文章:

  • 东莞网站推广软件html代码块
  • 如何建网站教程白云区网站建设公
  • 什么叫微网站企业网站策划书制作
  • 学生创业做网站制作设计修改WordPress文章发布模板
  • 西安做的好的网站公司jsp python 网站开发
  • 移动微网站青岛仿站定制模板建站
  • 做视频投稿赚钱的网站创建网站做搞笑视频
  • 二手书网站开发需求分析南通住房和城乡建设厅网站首页
  • 重庆网站建设seo公司哪家好孩子学编程的利弊
  • 北京网站开开发公司电话做招聘网站的风投
  • 蚌埠市重点工程建设管理局网站上海建设咨询网
  • 工信部网站备案查询步骤详解网页制作模板文件的扩展名
  • 网站建设工作分解浙江网站建设前十的公司
  • 怎么查询网站建设时间页面html wordpress
  • 工会网站升级改造建设方案网站图片最大尺寸是多少
  • 安徽网站建设维护企业做网站设置哪些模块
  • 网站建设公司的公众号seo上海优化
  • 网站与网页之间的区别是什么南昌房产网官方
  • 做个网站需要学会什么虹口品牌网站建设
  • 个人介绍网站怎么做外贸公司电话
  • 徐州网站外包物流网站怎么做代理
  • 网站更名策划方案微信分销平台排行
  • 手机企业网站推广我的家乡网页制作代码
  • 都匀住房和城乡建设厅网站做网站 新域名 还是
  • 移动端网站如何优化搜题公众号怎么制作
  • 网站建设与管理维护书籍网站用户体验是什么
  • 茂名住房和城乡建设厅网站360浏览器显示2345网址导航
  • 网页无法访问6中山市seo上词
  • 网站开发 税率网站如何做二级栏目
  • 合肥网站模板建站万网官网首页