![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
文章平均质量分 82
Neil-
吾日三省吾身~
展开
-
最小栈
问题描述:实现一个最小栈,包含以下方法:push、pop、getMin(返回栈中最小值)分析:由于栈具有push和pop方法,因此栈中的最小值是不固定的;因此可以通过维持另一个栈B用于保存历史最小元素的下标;每次入栈时判断入栈元素是否小于当前最小元素,小于则更新最小值同时将其下标保存在栈B中;每次出栈时判断出栈元素是否为当前最小元素,是则同时将栈B中的栈顶元素出栈;此时栈B的栈顶仍然是栈...原创 2019-12-06 18:24:02 · 308 阅读 · 0 评论 -
常见数组排序
冒泡排序选择排序直接插入排序希尔排序快速排序归并排序堆排序function bubble(arr) { if (arr.length < 2) return arr; for (let i = 0, len = arr.length; i < len; i++) { for (let j = i; j < len - 1; j++) ...原创 2019-11-14 19:08:43 · 144 阅读 · 0 评论 -
Trie
简介根据维基百科介绍:在计算机科学中,trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。一般情况下,不是所有的节点都有对应的值,只有叶子节点和部分内部节点所对应的键才有相关的值。图示实现class...原创 2019-11-13 14:23:07 · 89 阅读 · 0 评论 -
LeetCode 20题:括号匹配问题
问题描述Given a string containing just the characters ‘(’, ‘)’, ‘{’, ‘}’, ‘[’ and ‘]’, determine if the input string is valid.An input string is valid if:Open brackets must be closed by the same type o...原创 2019-11-12 16:42:20 · 465 阅读 · 1 评论 -
简单动态规划:递归及非递归方法
问题描述:给定金字塔结构的一组数,求从底部到顶部的最大路径(最小路径);不记录路径,只需返回最大路径值;非递归方法:var arr = [ [8, 10, 11, 16, 8], [12, 23, 0, 20], [9, 10, 3], [6, 7], [5]];function maxPathIt(arr, i, j) { ...转载 2019-05-16 19:32:02 · 916 阅读 · 0 评论 -
算法:找出字符串中仅出现一次的第一个元素并返回;
问题描述:输入:一个字符串;操作:找出字符串中仅出现一次的第一个字符并返回;输出:满足条件的字符;示例:输入: ‘abcefagebc’输出:‘f’;常规解法:常规解法即使用双层循环嵌套,知道找到满足条件的字符直接返回,时间复杂度为O(n^2);function findStr(str) { var l = str.length; var flag; fo...原创 2019-05-16 16:39:26 · 384 阅读 · 0 评论 -
回文数判断
#! /usr/bin/python3# -*- coding: utf-8 -*-import mathdef palindrome(): num = int(input('请输入一个正整数:')) while num < 0 or type(num) != type(1): num = int(input('请重新输入一个正整数:')) s = str(nu...原创 2019-05-07 22:51:07 · 245 阅读 · 0 评论 -
两个数的最大公约数与最小公倍数
最大公约数:GCD,greatest common divisor最小公倍数:LCM,least common multiple#! /usr/bin/python3# -*- coding: utf-8 -*-def get_GCD_LCM(): '''get the greatest common divisor and the least common multiple ...原创 2019-05-07 20:05:03 · 704 阅读 · 1 评论 -
水仙花数
#! /usr/bin/python3# -*- coding: utf-8 -*-def narcissistic_num(): ''' 水仙花数:一个三位数,各位数的三次幂之和等于该数字本身大小 ''' num = int(input('请输入一个正整数:')) if type(num) != type(3): print('输入的不是正整数!') ret...原创 2019-05-07 20:01:37 · 119 阅读 · 0 评论 -
完全数(完美数)
#! /usr/bin/python3# -*- coding: utf-8 -*-import mathdef perfect_num(): '''如果一个数恰好等于它的真因子之和,则称该数为“完全数”,又称“完美数”。所谓的真因子是指除了其本身外的所有因子(约数) ''' num = int(input('Please input a positive integer:...原创 2019-05-07 19:59:17 · 6205 阅读 · 0 评论 -
百钱白鸡问题
#! /usr/bin/python3# -*- coding: utf-8 -*-def buy_chicken(): '''鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何? Args: Returns: 鸡翁、鸡母、鸡雏个数 ''' results = [] for i in range(0, 20): res ...原创 2019-05-07 19:52:44 · 323 阅读 · 0 评论 -
斐波那契数列
#! /usr/bin/python3# -*- coding:utf-8 -*-def fibonacci(): '''输出斐波那契数列 ''' n = int(input('请输入需要输出的项数:')) x = 0 y = 1 for _ in range(n): print(y) x, y = y, x+yfibonacci()运行结果...原创 2019-05-07 19:39:16 · 97 阅读 · 0 评论 -
字符串旋转
**注:**本文档很多内容根据参考文献思路整理而来,题目描述:给定一个字符串,要求把字符串前面的若干个字符移动到字符串的尾部,如把字符串“abcdef”前面的2个字符’a’和’b’移动到字符串的尾部,使得原字符串变成字符串“cdefab”。请写一个函数完成此功能,要求对长度为n的字符串操作的时间复杂度为 O(n),空间复杂度为 O(1)思路分析:需求拆分,移动前m个字符,可以拆分为每次从字...原创 2018-10-24 21:22:45 · 272 阅读 · 0 评论 -
携程笔试——二叉树遍历
携程笔试题:根据二叉树的层序遍历结果输出其先序遍历的结果;(题设未说明是完全二叉树,但是感觉应该是完全二叉树,否则无法求解)/** * 根据层序遍历结果输出先序遍历结果 * @param {[Array]} tree [存放层序遍历结果] * @return {[Array]} [返回先序遍历结果] */function preOrder (tree) { // 建立二原创 2017-09-22 12:44:06 · 244 阅读 · 0 评论 -
JS实现单链表
函数功能:实现单链表的初始化,插入节点、删除节点、查找节点和删除节点功能;/** * 单链表构造函数 */function LinkedList () { this.ptr = null; this.head = null; this.length = 0; this.insert = insertNode; this.delete = deleteNod原创 2017-09-19 10:47:04 · 804 阅读 · 0 评论 -
Javascript二叉搜索树实现
基本知识二叉树:二叉树的所有结点的最大度数为2; 二叉搜索树:又称为二叉排序树,根节点与其左右子结点的满足以下关系:左子结点<根结点<右子结点; 完全二叉树:除最后一层外,其它各层达到该层最大结点数;结点为n的完全二叉树深度为log2(n+1); 第i层的最大结点数:2^(i-1); 深度为h的最大最大总节点数:2^h-1;function BinarySearchTree() { /*原创 2017-06-08 02:31:46 · 358 阅读 · 0 评论