- 反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
class Solution {
public ListNode reverseList(ListNode head) {
ListNode dummy = new ListNode();
dummy.next = head;
while(head != null && head.next != null){
ListNode next = head.next;
ListNode temp = dummy.next;
head.next = head.next.next;
dummy.next = next;
next.next = temp;
}
return dummy.next;
}
}
- 旋转数组
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。
进阶:
尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。
你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?
示例 1:
输入: nums = [1,2,3,4,5,6,7], k = 3
输出: [5,6,7,1,2,3,4]
解释:
向右旋转 1 步: [7,1,2,3,4,5,6]
向右旋转 2 步: [6,7,1,2,3,4,5]
向右旋转 3 步: [5,6,7,1,2,3,4]
class Solution {
public void rotate(int[] nums, int k) {
int a = nums.length;
for(int i = 0; i < k; i++) {
int prime = nums[a - 1];
for(int j = 0; j < a; j++) {
int t = nums[j];
nums[j] = prime;
prime = t;
}
}
}
}