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

做网站玩玩室内装修效果大图

做网站玩玩,室内装修效果大图,色彩设计网站,网站备案手机号码题目要求:给定链表的头结点,旋转链表,将链表每个节点向右移动K个位置。 示例: 输入:head [1,2,3,4,5], k2 输出:[4,5,1,2,3] 双指针思想: 先用双指针策略找到倒数K的位置,也就是(…

题目要求:给定链表的头结点,旋转链表,将链表每个节点向右移动K个位置。
示例:
输入:head = [1,2,3,4,5], k=2
输出:[4,5,1,2,3]
在这里插入图片描述

双指针思想:
先用双指针策略找到倒数K的位置,也就是(1,2,3)和4,5)两个序列,之后再将两个链表拼接成(4,5,1,2,3}就行了。
具体思路是:
因为k有可能大于链表长度,所以首先获取一下链表长度len,如果然后k=k % len,如果k == 0,则不用旋转,直接返回头结点。否则:
1、快指针先走k步
2、慢指针和快指针一起走
3、快指针走到链表尾部时,慢指针所在位置刚好是要断开的地方。把快指针指向的节点连到原链表头部,慢指针指向的节点断开和下一节点的联系
4、返回结束时慢指针指向节点的下一节点

import java.util.*;public class RotateRight_旋转数组 {public static void main(String[] args) {//int[] a = {1, 2, 3, 4, 5};ArrayList<Integer> lst = new ArrayList<>();//输入Scanner scanner = new Scanner(System.in);String s = scanner.nextLine();Scanner input = new Scanner(s);while(input.hasNextInt()){lst.add(input.nextInt());}Integer[] a = lst.toArray(new Integer[lst.size()]);ListNode nodeA = initLinkedList(a); //数组初始化为链表ListNode nodeB = initLinkedList2(lst); //集合初始化为链表ListNode node = rotateRight(nodeB, 2);  //开始旋转System.out.println(toString(node));}//定义链表节点static class ListNode{public int val;public ListNode next;ListNode(int x){val = x;next = null;}}//数组初始化链表public static ListNode initLinkedList(Integer[] a){ListNode head = null, cur = null;for (int i = 0; i < a.length; i++){ListNode newNode = new ListNode(a[i]);if (i==0){head = newNode;cur = newNode;}else{cur.next = newNode;cur = cur.next;}}return head;}//集合初始化链表public static ListNode initLinkedList2(ArrayList a){ListNode head = null, cur = null;for (int i = 0; i < a.size(); i++){ListNode newNode = new ListNode((Integer) a.get(i));if (i==0){head = newNode;cur = newNode;}else{cur.next = newNode;cur = cur.next;}}return head;}//开始旋转public static ListNode rotateRight(ListNode head, int k) {if (head == null || k == 0) {return head;}ListNode temp = head;ListNode fast = head;ListNode slow = head;int len = 0;//链表的长度while (head != null) {head = head.next;len++;}//如果能整除,则直接返回该链表if (k % len == 0) {return temp;}while ((k % len) > 0) {k--;fast = fast.next;}while (fast.next != null) {fast = fast.next;slow = slow.next;}ListNode res = slow.next;slow.next = null;fast.next = temp;return res;}//输出链表public static String toString(ListNode head) {ListNode current = head;//StringBuilder可以用来拼接字符串StringBuilder sb = new StringBuilder();while(current !=null){sb.append(current.val).append("\t");current = current.next;}return sb.toString();}}
http://www.yayakq.cn/news/960284/

相关文章:

  • 服装网站公司网站企业品牌网站建设定制开发
  • 怎么做网页 网站制作揭阳新闻最新消息
  • 宁波网站seo公司设计界面
  • 做外贸翻译用哪个网站好专门做预售的网站
  • 如何选择做网站做海报的专业网站
  • 百度推广手机网站检测做网站怎么兼容所有浏览器
  • 摄影照片投稿网站wordpress学院主题
  • 重庆科技建设高端的网站优化公司
  • 移动端网站开发与网页开发区别简述php网站开发流程图
  • 济南 网站推广合川做网站
  • 网站模板安装好后外贸推广信
  • 网站点击代码二维码生成器软件下载
  • wordpress手机pcseo整站优化公司持续监控
  • 卫辉市住房和城市建设局网站网站修改教程
  • 郑州企业网站建设公司佛山公司网站建设
  • 手机网站建立如何免费开网店
  • php网站的部署做二手货的网站有哪些
  • 京东上怎样做网站seo优化推广教程
  • 何如做外贸网站推网网页设计项目教程
  • 定制网站建设宝安西乡美橙网站产品详情
  • 2018一级a做爰片免费网站安装wordpress数据库
  • 网站制作与管理技术...wordpress 只更鸟翻页设置
  • 免费网站建站平台成都市住房和建设局官网
  • 网站建设哪些网创项目资源网站
  • 做培训网站前端Linux网站建设总结
  • 做网站的出路分销网站开发
  • 哪里可以学做网站做网站公
  • 为什么网站建设公司越来越少免费制作logo的软件
  • 简述建设iis网站的基本过程法国企业网站建设
  • 如何制作营销网站模板厦门模板建站