反转链表(递归链表)爬楼梯(记忆化搜索数学)旋转数组(数组数学)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反转链表(递归链表)爬楼梯(记忆化搜索数学)旋转数组(数组数学)相关的知识,希望对你有一定的参考价值。
反转链表(递归、链表)
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 输入:head = [1,2] 输出:[2,1] 输入:head = [] 输出:[]
示例 1: 示例 2: 示例 3:
提示:
- 链表中节点的数目范围是 [0, 5000]
- -5000 <= Node.val <= 5000
**进阶:**链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?
解答:
public class ListNode
int val;
ListNode next;
ListNode(int x)
val = x;
class Solution
public ListNode reverseList(ListNode head)
ListNode pre = null;
while (head != null)
ListNode tmp = head.next;
head.next = pre;
pre = head;
head = tmp;
return pre;
爬楼梯(记忆化搜索、数学)
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? **注意:**给定 n 是一个正整数。 示例 1:
输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶
示例 2:
输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶
解答:
class Solution
public int climbStairs(int n)
int[] num = new int[n + 1];
num[0] = 1;
num[1] = 1;
for (int i = 2; i <= n; i++)
num[i] = num[i - 1] + num[i - 2];
return num[n];
旋转数组(数组、数学)
给定一个数组,将数组中的元素向右移动 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] 示例 2: 输入:nums = [-1,-100,3,99], k = 2 输出:[3,99,-1,-100] 解释: 向右旋转 1 步: [99,-1,-100,3] 向右旋转 2 步: [3,99,-1,-100]
提示:
- 1 <= nums.length <= 2 * 104
- -231 <= nums[i] <= 231 - 1
- 0 <= k <= 105
解答:
class Solution
public void rotate(int[] nums, int k)
if (k > nums.length)
k = k % nums.length;
int mark = nums.length - k;
int mark2 = (nums.length + mark) / 2;
for (int i = 0; i < (mark + 1) / 2; i++)
swap(nums, i, mark - 1 - i);
for (int j = mark; j < mark2; j++)
swap(nums, j, nums.length + mark - 1 - j);
for (int index = 0; index < nums.length / 2; index++)
swap(nums, index, nums.length - 1 - index);
public static void swap(int[] nums, int a, int b)
int temp = nums[a];
nums[a] = nums[b];
nums[b] = temp;
以上是关于反转链表(递归链表)爬楼梯(记忆化搜索数学)旋转数组(数组数学)的主要内容,如果未能解决你的问题,请参考以下文章