算法链表-局部反转
题目:描述 将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 O(n)O(n),空间复杂度 O(1)O(1)。 例如: 给出的链表为 1\to 2 \to 3 \to 4 \to 5 \to NULL1→2...
题目:描述 将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 O(n)O(n),空间复杂度 O(1)O(1)。 例如: 给出的链表为 1\to 2 \to 3 \to 4 \to 5 \to NULL1→2...
1. 背景 笔试时,遇到一个算法题:差不多是 在n个不同的数中随机取出不重复的m个数。洗牌算法是将原来的数组进行打散,使原数组的某个数在打散后的数组中的每个位置上等概率的出现,刚好可以解...
什么是动态规划:动态规划_百度百科 内容太多了不作介绍,重点部分是无后效性,重叠子问题,最优子结构。 问S->P1和S->P2有多少种路径数,毫无疑问可以先从S开始深搜两次,S->P1和S->P2找出所有路径数,但是...
文章目录 前言 主要内容 总结 更多宝藏 前言 在数字化时代,计算机已经成为人类生活中不可或缺的一部分。计算机能够帮助我们处理海量的数据,实现各种复杂的功能和任务,其中最关键的就是算法。 算法是计算机科学中的基础学科,涉及众多的算法类型和应...
1.递归实现指数型枚举 从 1∼n 这 n 个整数中随机选取任意多个,输出所有可能的选择方案。 输入格式 输入一个整数 n。 输出格式 每行输出一种方案。 数据范围 1≤n≤15 n=int(input()) status=[0]*n de...
什么是动态规划? 动态规划是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划算法是一种高效的求解最优化问题的方法。 动态规划常常适用于有重叠子问题和最优子结构性质的问题,可以通过记忆化存储子问题的解,避免重复计算,...
前言 递归是一种非常重要的编程技巧,它可以让我们用简洁的代码解决复杂的问题。 主要内容 主要内容: 递归是一种算法,它通过调用自身来解决问题。一个递归函数通常包括两个部分:基本情况(base case)和递归情况(recursive cas...
重排链表 最长递增子序列 环形链表 反转链表 最长回文子串 全排列 LRU 缓存 合并K个升序链表 无重复字符的最长子串 删除链表的倒数第 N 个结点 1. 重排链表 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 →...
双指针简介 双指针算法是一种通过设置两个指针不断进行单向移动来解决问题的算法。 它包含两种形式:快慢指针和对撞指针。 快慢指针是一种设置步长不同的两个指针,用于解决链表中的问题,如判断是否有环,找到中间节点等。 对撞指针是一种设置在序列两端...
目录 1.6 快速排序 1. 算法步骤 2. 动图演示 3.代码实现 1.7 堆排序 1. 算法步骤 2. 动图演示 3. 代码实现 1.8 计数排序 1. 计数排序的特征 2. 动图演示 3.代码实现 1.9 桶排...