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

网站优化靠谱/的磁力搜索引擎

网站优化靠谱,的磁力搜索引擎,做英文网站常用的字体,如何开淘宝店文章目录题目描述思路分析步骤罗列解题代码复杂度分析GitHub源码题目描述 给定一链表,旋转链表,将链表每个节点向右移动k个位置,其中k是非负数。 示例1: 输入: head [1, 2, 3, 4, 5], k2 输出: head [4…

文章目录

  • 题目描述
    • 思路分析
    • 步骤罗列
    • 解题代码
    • 复杂度分析
    • GitHub源码

题目描述

给定一链表,旋转链表,将链表每个节点向右移动k个位置,其中k是非负数。

示例1:

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

示例2:

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

思路分析

直观地理解这道题,即将tail节点一次次的设置为head,设置的次数为k; 这里我们不难发现,会存在链表长度lk的比较关系:

  1. l < k时,需要转移的是链表的一部分;
  2. l = k时,则为原链表;
  3. l > k时,则为几次无用功 + l < k,这时我们需要对lk取余,即l % k

在上述描述过程中,我们其实涉及到两个问题:

  1. 如何以较小代价取得链表长度信息l?或者是如何在获取长度信息的同时做一些有用功?
  2. 当我们得到取余后的k时如何实现需要重新链接的这部分节点?

这里为方便讲解,我们做出图示:

这里我们先考虑两个节点间的互换,可以看图1:
在这里插入图片描述
图 1

如图一所示,我们对原始链表(a)移动了一次节点,得到(b),移动两次得到©,我们不免下意识地会想到 循环链表。因为这里只涉及到了链表headtail的节点变化,我们将图1,以另一种方式来展示会更直观:
在这里插入图片描述
图2

在图2中,我们在原始链表的尾节点5添加了一条辅助指针,且用绿色虚线标注出来。通过图2,我们可以清晰的看到,在链表节点移动的过程中,可以进一步看作是headtail指针指向的节点变化,这样的角度进一步简化了解题的思路。

步骤罗列

  1. 通过遍历找到尾节点oldTail,并使其与当前头节点链接oldTail.next = head,此时会构造出循环链表;
  2. 找到新的尾节点newTail, 且此时新的头节点为其下一节点head = newTail.next
  3. 更新newTail.next = null,返回新的链表头。

解题代码

    public static ListNode solution(ListNode head, int k) {if (head == null || k == 0 || head.next == null) {return head;}//init pointersListNode oldTail = head;ListNode newTail = head;ListNode newHead;int len; //record the length of list/* Step 1:oldTail move forward to get length of listandmake list to be a circular one*/for(len = 1; oldTail.next != null; len++){oldTail = oldTail.next;}oldTail.next = head;/* Step 2: upgrate newTail and newHead        */   for(int i = 0; i < (len - k%len -1);i++)newTail = newTail.next;newHead = newTail.next;/* Step 3: upgrate newTail.next and return result        */newTail.next = null;       return newHead;}

复杂度分析

时间复杂度:我们对数据进行了不止一次遍历,但小于两次遍历,故依然为线性级复杂程度,所以时间复杂度为O(N);(这里N与思路分析中的l为同一变量)
空间复杂度:我们没有借助额外的容器,所以空间复杂度为常量级O(1)。

GitHub源码

完整可运行文件请访问GitHub。

http://www.lbrq.cn/news/1412389.html

相关文章:

  • 合肥做网站便宜/友链交换网站
  • 成都做app定制开发多少钱/石家庄seo报价
  • 江西昌宇建设工程公司网站/线上营销推广方式
  • 瑞昌建站公司/自己做网站怎么做
  • bugku中网站被黑怎么做/外贸网络推广
  • 网站动态背景欣赏/seo优化排名工具
  • wordpress 显示备案号/seo基本步骤
  • 怎样做一个简单的网站首页/宁波关键词网站排名
  • 新疆网站建设品牌/保定seo排名外包
  • 今日生猪价格表/seo在线论坛
  • 微商网站建设/2023年7月疫情爆发
  • 建设京剧网站的意义/百度推广业务员
  • 网站集约化建设讲话稿/中国域名注册官网
  • 株洲企业网站建设费用/站长素材音效
  • 帆布网站做哪个/百度框架户开户渠道代理
  • 江门企业网站建设公司/石家庄最新新闻事件
  • 帮公司做网站赚钱吗/宁波seo推广
  • 黔东南网站建设gzklyy/指数工具
  • 社交网站页面设计/危机公关处理
  • 品牌网站建设四川/企业宣传片视频
  • 小程序转换成网页/海阳seo排名优化培训
  • 网站的网络公司/广告推广软文案例
  • 网彩预测网站制作教程/在线营销推广
  • 个人php网站/免费发布活动的平台
  • 做配色的网站/天天外链官网
  • 网站开发2008/宜昌seo
  • 做更好的自己 网站/打字赚钱平台 学生一单一结
  • 沈阳网站建设技术公司排名/百度怎么推广
  • javascript做网站重要吗/网络营销的整体概念
  • 免费b2c的网站有哪些/抖音seo关键词优化
  • 敏感数据加密平台设计实战:如何为你的系统打造安全“保险柜”
  • kafka的pull的依据
  • vue封装请求拦截器 响应拦截器
  • 【算法】模拟专题
  • 原子操作及基于原子操作的shared_ptr实现
  • EC11编码器