zoukankan      html  css  js  c++  java
  • 旋转链表 指针移动

    题目:

      

     思路:

       1  遍历链表将Node中的val 放入双端队列 

       2  用双端队列的api    (注意用K % node数量) 是移动的次数,减少重复移动

         getLast    //获取最后一个值

         pollLast   //移除最后一个值

         addFirst  //将最后一个值加到头部

       3  新建链表,将队列中的值链起来


    (一)代码

    class Solution {
        public ListNode rotateRight(ListNode head, int k) {
    
           if(head == null){
               return null;
           }
    
           //将链表中的数据  添加到队列中
           Deque<Integer> queue = new LinkedList<>();
           int z = 0;
           while (head != null){
               queue.add(head.val);
               head = head.next;
               z++;
           }
    
           //移动链表节点
           int zz = k % z;
           while (zz > 0){
               Integer last = queue.getLast();
               queue.pollLast();
               queue.addFirst(last);
               zz--;
           }
    
            //新建链表
            ListNode l = new ListNode(0);
            ListNode ll = l;
            while(queue.size() > 0){
                ListNode nodeList = new ListNode(queue.pollFirst());
                l.next = nodeList;
                l = nodeList;
            }
    
            return ll.next;
        }
    }

         要走的弯路,一步不会少

  • 相关阅读:
    mybatis-config.xml详解
    过滤器与拦截器
    Tomcat 部署web 项目
    Tomcat架构
    git stash
    AbstractQueuedSynchronizer 源码解读(转载)
    Kafka 转载
    Oracle数据库TNS详解
    Oracle建表知识全面详解
    Oracle高级教程
  • 原文地址:https://www.cnblogs.com/misscai/p/15352563.html
Copyright © 2011-2022 走看看