![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法学习
文章平均质量分 59
凌乱533
但行好事,莫问前程;但问耕耘,莫问收获;
展开
-
由反转链表学习递归算法,寻求递推公式而不是层层调用再返回
这个思路对写递归代码来说,还是比较简单适用的,比我看到的这些把递归掰开来揉碎了来讲的要更容易出代码**。希望对写递归还比较迷茫的同学们有所帮助,如果我写的对你有帮助,还望大家能多点赞转发。 ### 先放结论 **Rules Number One**,基本上,**所有的递归问题都可以用递推公式来表示。有了这个递推公式,我们就可以很轻松地将它改为递归代码。**。所以,遇到递归不要怕,先想**递推公式**。 ##### 例1: (比较明显的能递推公式的问题)问题:斐波那契数列的第n项 递推公式:f(..转载 2022-01-07 21:50:04 · 192 阅读 · 0 评论 -
LeetCode 287. 寻找重复数 抽屉原理
给定一个包含n + 1 个整数的数组nums,其数字都在 1 到 n之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:1不能更改原数组(假设数组是只读的)。2只能使用额外的 O(1) 的空间。3时间复杂度小于 O(n2) 。4数组中只有一个重复的数字,但它可能不止重复出现一次。来源:力扣(LeetCode)链接:h...原创 2020-08-25 18:14:15 · 302 阅读 · 0 评论 -
二分查找经验
下面提到的一些点可能不是您存在的问题,如果讲得过分了,还请您谅解,在这里给同样有问题的朋友提个醒:我的经验是把定义区间成为左闭右闭区间,左右边界是无差别的,弄成左闭右开,反而增加了思考的复杂程度; 明确int = left + ( right - left ) / 2这里除以 2 是下取整; 明确while(left <= right)和while(left < right)这两种写法其实在思路上有本质差别,while(left <= right)在循环体内部直接查...转载 2020-08-25 17:17:48 · 119 阅读 · 0 评论 -
LeetCode 33. 搜索旋转排序数组 java 部分有序条件下的二分查找
https://www.lingluan.vip假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回-1。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是O(logn) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], target = 0输出: 4示例2:输入: ...原创 2020-08-24 17:24:25 · 177 阅读 · 0 评论 -
leetcode 15. 三数之和
给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]比较经典的题目,难点不在于能否找得到,而在于不能包含重复的三元组,首先进行一个排序,这样在每次遍历的时候如果得到一组...转载 2020-08-12 17:35:38 · 76 阅读 · 0 评论 -
[转]String、StringBuffer与StringBuilder之间区别
String是一个不可变对象,每次对String对象操作时都是产生新的对象,然后将指向新的String对象,故如果涉及大量对String的操作时会造成资源的浪费。一、Java String 类——String字符串常量简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,这样不仅效率低下,而且大量浪费有限的转载 2020-08-03 16:12:31 · 144 阅读 · 0 评论 -
用欧几里得定理求最大公约数和最小公倍数
求最小公约数:原理:GCD(a,b) = GCD(a,a%b) (a>b)一直递归下去直到a%b=0 时返回b。最大公倍数:原理:最大公倍数= a*b/最小公约数package demo;import java.util.Scanner;public class Main欧几里得原理最大公约数最小公倍数 { /*求最大公约数的新方法:欧几里得原理 * GCD(a,b) = G...原创 2018-03-27 23:03:55 · 1376 阅读 · 0 评论 -
算法训练 瓷砖铺放 【递归】java
算法训练 瓷砖铺放 时间限制:1.0s 内存限制:512.0MB 锦囊1锦囊2锦囊3问题描述 有一长度为N(1<=N<=10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限。要将这个长度为N的地板铺满,一共有多少种不同的铺法? 例如,长度为4的地面一共有如下5种铺法: 4=1+1+1+1 4=2+1+1 4=1+2+1 4=1+...原创 2018-02-14 22:43:46 · 16834 阅读 · 1 评论 -
UVA129 Krypton Factor 困难的串 dfs回溯【DFS】
Krypton FactorTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 392 Accepted Submission(s): 174Problem DescriptionYou have been employed by t...原创 2018-02-13 22:43:52 · 17288 阅读 · 0 评论 -
算法训练 求先序排列 【二叉树的递归遍历】
算法训练 求先序排列 时间限制:1.0s 内存限制:256.0MB 锦囊1锦囊2锦囊3问题描述 给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。输入格式 两行,每行一个字符串,分别表示中序和后序排列输出格式 一个字符串,表示所求先序排列 样例输入 BADC BDCA样例输出ABCD递归的突破点在于:后...原创 2018-02-13 22:41:15 · 17747 阅读 · 0 评论 -
算法学习 八皇后问题的递归实现 java版 回溯思想
1.问题描述八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。八皇后问题可以推广为更一般的n皇后摆放问题:这时棋盘的大小变为n×n,而皇后个数也变成n。当且仅当 n = 1 或 n ≥ 4 时问题有解。2.思路分析 回溯法:当把问题分成若干步骤并递归求解时...原创 2018-02-12 21:20:43 · 18022 阅读 · 0 评论