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;
        }
    }

         要走的弯路,一步不会少

  • 相关阅读:
    2001.3.9 每日总结
    2021.3.5
    2021.3.4每日总结
    2021.3.3每日总结
    每日总结2021.3.2
    2021.1.13
    2021.1.12
    PodPreset
    ingress-nginx安装
    RBAC
  • 原文地址:https://www.cnblogs.com/misscai/p/15352563.html
Copyright © 2011-2022 走看看