62 旋转链表(7)

87 阅读1分钟

这个题也是新刷 但是能理解个9成吧 我听完船长和助教的讲解开始写, 没有遇到多少问题,所以直接贴代码我把每一步的代码都注释了,估计在写个两三次就能完全理解会写了,至少下一次在写估计能一次写完

var rotateRight = function (head, k) {
	// 判断 因为下面 循环用cur.next
	if (!head) return null;
	let cur = head, size = 1;
	// 1 记录一下链表的长度
	while (cur.next) {
		cur = cur.next;
		size += 1;
	}
	// 2 连城还
	cur.next = head;
	// 3 旋转k步骤 这里需要考虑 k值比较大 走n圈 所以所以去模
	k %= size;
	// 这一步 按照船长讲解 是循环右移动 所以是需要见一下
	k = size - k;
	// 4 开始旋转
	while (k--) {
		cur = cur.next;
	}
	// 5 就是把新链表的头节点 cur.next 赋值给head 然后掐断
	head = cur.next;
	cur.next = null;
	return head;
};

每一步都有我的理解注释 都不过多解释了