网站升级维护需要多久中石化建设工程电子招投标交易网
网站升级维护需要多久,中石化建设工程电子招投标交易网,建设标准下载网站,有教做翻糖的网站吗每日一题#xff0c;很久没做链表的题了#xff0c;今天做l一道相对简单的力扣中等难度题。
题目要求
给你一个链表的头节点 head #xff0c;旋转链表#xff0c;将链表每个节点向右移动 k 个位置。
示例 1#xff1a; 输入#xff1a;head [1,2,3,4,5], k 2
输出很久没做链表的题了今天做l一道相对简单的力扣中等难度题。
题目要求
给你一个链表的头节点 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]
题目解析
这道题的要求很简单根据它给出的数字将链表移动即可。
首先计算链表的长度当k等于链表长度时链表就正好转完一圈相当于没有移动所以一旦k的值超过了链表的长度那么移动的值就相当于k除以链表长度取余即可。
拿到真正要移动的位置后就可以寻找到链表旋转后新头节点和新尾节点具体操作为让一个指针从头节点移动链表长度减去移动的次数再减一次就指向到了新尾节点下一个节点就是链表的新头节点再将链表尾部指向头部将新尾部置空即可这样就得到了新的旋转链表。
例如示例1中 这样就完成了旋转整体逻辑比较简单具体实现可以查看下面代码。
代码实现
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/
class Solution {public ListNode rotateRight(ListNode head, int k) {if(headnull) return null;int len1;ListNode h head;while(h.next!null){len;hh.next;}int n k%len;if(n0) return head;ListNode newTail head;for(int i0;ilen-n-1;i){newTail newTail.next;}ListNode newHead newTail.next;h.next head;newTail.next null;return newHead;}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/87732.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!