回溯法 思路: 通过回溯的思维,递归调用枚举出所有可能。 class Solution: def letterCombinations(self, digits): phone = {'2': ['a', 'b', 'c'], '3': ['d', 'e', 'f'], '4': ['g', 'h' ...
分类:
其他好文 时间:
2020-04-29 12:57:46
阅读次数:
64
Java对象的生命周期 在Java中,对象的生命周期包含下面几个阶段: 1. 创建阶段(Created) 2. 应用阶段(In Use) 3. 不可见阶段(Invisible) 4. 不可达阶段(Unreachable) 5. 收集阶段(Collected) 6. 终结阶段(Finalized) 7 ...
分类:
编程语言 时间:
2020-04-21 09:20:54
阅读次数:
66
//快速排序#include "stdafx.h"using namespace std;#include<vector>#include<string>void quickaont(int a[], int l, int n);int main(){ int aa[] = { 1, 5, 7, 6 ...
分类:
编程语言 时间:
2020-04-21 00:23:14
阅读次数:
92
栈的用途比较广 如:子进程调用,递归调用,表达式转换,二叉树遍历,深度优先搜索 等等 实现思路: 1)top=-1时栈为空,top=maxsize-1栈满 C#代码实现: 1 using System; 2 3 namespace 数据结构 4 { 5 public class ArrayStack ...
分类:
编程语言 时间:
2020-04-16 09:18:27
阅读次数:
73
需求:给定一个路径(F:\\java),请通过递归完成遍历该目录下的所有内容,并把所有文件的绝对路径输出在控制台 /* 需求:给定一个路径(F:\\java),请通过递归完成遍历该目录下的所有内容,并把所有文件的绝对路径输出在控制台 */ public class DiGuiDemo01 { pub ...
分类:
其他好文 时间:
2020-04-14 16:58:07
阅读次数:
68
算法描述: 快速排序也使用分治思想,其过程为: 分解:将原数组划分为两个子数组,但要求左边数组的每个元素都小于右边数组的每个元素。 解决:通过递归调用快速排序,对子数组进行排序。 合并:因为子数组是原址排序,所以不需要合并操作。 快速排序划分数组的方法: 1. 单方向遍历 选择最后一个元素为基准元素 ...
分类:
编程语言 时间:
2020-04-11 15:50:08
阅读次数:
85
import turtledef tree(branch_len): if branch_len > 5: #树干太短不画,即递归结束条件 t.forward(branch_len)#画树干 t.right(20) #右倾斜20度 tree(branch_len - 15) #递归调用,画右边的小树 ...
分类:
其他好文 时间:
2020-04-07 00:31:10
阅读次数:
103
函数的递归调用 基本介绍 一个函数在函数体内又调用了本身,我们称为递归调 递归调用快速入门 上面代码的分析图: 代码2 对上面代码分析的示意图: 递归调用的总结 函数递归需要遵守的重要原则: 1)执行一个函数时,就创建一个新的受保护的独立空间(新函数栈) 2)函数的局部变量是独立的,不会相互影响 3 ...
分类:
其他好文 时间:
2020-04-06 15:46:55
阅读次数:
44
1、反转链表 "力扣地址" 实现方法一:三指针遍历,pre+cur+next;时间复杂度O(n),空间复杂度O(1)。 实现方法二:递归解法,1+ (reverse(2,3));时间复杂度O(n),空间复杂度O(n)(递归调用要占用系统栈空间)。 2、删除链表的节点 "力扣地址" 解法:增加dumm ...
分类:
编程语言 时间:
2020-04-05 13:47:46
阅读次数:
84
对于包含n个数的暑期如的数组来说,快速排序是一种最坏的情况为时间复杂度为n2的排序算法。虽然最坏情况时间复杂度很复杂,但是快速排序法通常是实际应用中最好的选择,因为平均性能非常好。在元素互异的情况下,期望的时间 复杂度为nlog(n)。 快速排序同样采用了分治策略: 通过递归调用,对数组A[p, . ...
分类:
编程语言 时间:
2020-04-05 09:42:24
阅读次数:
89