数据结构
ZzzMxin
这个作者很懒,什么都没留下…
展开
-
Java Stream
Java Stream1. 概念说明Stream这个词很容易造成误解,这里先做一个澄清,Java中的流:非IO流,非数据流,而是集合的功能增强非集合元素,非数据结构,也不保存数据,但却为数据操作而生其实流式操作在动态语言中并不少见,map/filter/reduce...在动态语言中都是耳熟能详的用法,又叫迭代器。所以,在Java中也类似。但Java中已经有Iterator的概念,...原创 2019-12-30 19:34:26 · 266 阅读 · 0 评论 -
在字符串中找出连续最长的数字串(python实现)
在字符串中找出连续最长的数字串(Python实现)输出字符串中最长的数字字符串和它的长度。如果有相同长度的串,则要一块儿输出,但是长度还是一串的长度解析:简单的遍历字符串,并设置length,当连续数字串大于len时,进行交换,否则清空AC代码如下:# coding=utf-8import sysdef solve(): for line in sys.stdin:...原创 2018-03-22 00:39:47 · 22421 阅读 · 2 评论 -
杨氏矩阵查找(Python实现)
杨氏矩阵查找(Python实现)问题描述: 在一个m行n列二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。有则返回1,无则返回0,输入错误返回input error问题分析:根据杨氏矩阵的规律可知,左上角是最小元素,右下角是最大元素,进行比较一次只能排除一个。而利用左下角或者右...原创 2018-03-22 00:50:02 · 1362 阅读 · 0 评论 -
面试题之空瓶子换水问题及其扩展规律(python实现)
面试题之空瓶子换水问题及其扩展规律(python实现)问题描述: 有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空 汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满 的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老...原创 2018-04-09 00:24:16 · 2604 阅读 · 0 评论 -
《剑指offer》面试题之从上往下打印出二叉树(Python实现)
《剑指offer》面试题之从上往下打印出二叉树(Python实现)题目描述:从上往下打印出二叉树的每个节点,同层节点从左至右打印。解题思路:利用辅助队列存储待打印结点完整代码如下:# coding:utf-8class Node(object): """ 定义二叉树结点 """ def __init__(self, data): ...原创 2018-04-10 13:52:37 · 724 阅读 · 0 评论 -
动态规划之01背包问题及其优化(python实现)
动态规划之01背包问题及其优化(python实现)**背包问题(**Knapsack problem)是一种组合优化的NP完全问题。 问题描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。问题的名称来源于如何选择最合适的物品放置于给定背包中。解决思路:动态规划,对每一件物品遍历背包容量,当背包可容纳值大于等于当前物品,与之前已放...原创 2018-04-16 13:23:28 · 44417 阅读 · 13 评论 -
腾讯笔试题之m台机器完成n个任务调度问题(Python实现)
腾讯笔试题m台机器完成n个任务调度最大收益问题问题描述:m个任务,第i个任务需要Xi的时间去完成,难度为Yi。有m台机器,第i台机器最长工作时间为Zi,机器等级为Wi。对于一个任务只能交由一台机器完成,任务被完成的条件为:任务所需时间Xi小于机器最长工作时间Zi,任务难度Yi小于等于机器等级Wi。任务被第i台机器完成的收益为200*Xi+3*Yi。一台机器只能分配一个任务。...原创 2018-04-10 22:27:21 · 7710 阅读 · 0 评论 -
面试题之旋转数组求最小数字问题(Python实现)
旋转数组求最小数字问题描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 解题思路: 采用二分查找,设置两个游标low和high指向首尾特殊情况,当...原创 2018-04-12 13:32:38 · 1197 阅读 · 0 评论 -
递归和非递归快速排序(Python实现)
递归和非递归快速排序(Python实现)快速排序的原理是基于分治策略,设定一个基准线(pivot),将数据分为两部分,不断分治实现数据的排序由实现原理容易得到递归代码如下:def qsort(arr): if not len(arr): return [] else: # 在这里以第一个元素为基准线 pivot = arr[0...原创 2018-04-11 21:57:32 · 8886 阅读 · 7 评论 -
python实现一个包含min函数的栈
python实现一个包含min函数的栈题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。思路:借助一个辅助栈,用来存放每次栈操作时(包括入栈和出栈)栈中最小元素。具体实现代码和相关注释如下:# coding:utf-8class MinInStack: def __init__(self): self.stack = [...原创 2018-03-31 14:16:44 · 510 阅读 · 0 评论 -
python实现链表基本操作以及链表成对调换
python实现链表基本操作以及链表成对调换用类来模拟链表基本操作的实现 并且实现python常见面试题目链表成对调换(1234->2143)具体代码实现和相关注释如下:#!usr/bin/python#-*- coding:utf-8 -*-class Node(object): def __init__(self, data, pnext=None): ...原创 2018-03-31 13:19:16 · 1909 阅读 · 0 评论 -
约瑟夫问题
问题描述:39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止思路:利用循环链表遍历输出自杀顺序#include "stdio.h"#include "stdlib.h"typedef struct node{原创 2017-10-02 23:57:29 · 179 阅读 · 0 评论 -
魔术师发牌问题
一位魔术师掏出一叠扑克牌,魔术师取出其中13张黑桃,洗好后,把牌面朝下。说:“我不看牌,只数一数就能知道每张牌是什么?”魔术师口中念一,将第一张牌翻过来看正好是A;魔术师将黑桃A放到桌上,继续数手里的余牌,第二次数1,2,将第一张牌放到这叠牌的下面,将第二张牌翻开,正好是黑桃2,也把它放在桌子上。第三次数1,2,3,前面二张牌放到这叠牌的下面,取出第三张牌,正好是黑桃3,这样依次将13张牌翻出,全部原创 2017-10-03 23:04:19 · 338 阅读 · 0 评论 -
爬虫遇到栈溢出(stack overflow)的问题
今天在用python爬虫抓取网页信息的时候,出现了一个关于栈溢出的错误:Fatal Python error: Cannot recover from stack overflow.没有找到正确的解决方案,然后就搜索了跟栈溢出相关的知识并检查了代码,发现了问题所在:使用函数时递归调用次数过多(1000多),导致栈溢出。在Python中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函原创 2017-10-10 23:01:50 · 11926 阅读 · 0 评论 -
python之斐波那契青蛙跳台阶、矩阵覆盖问题及其优化
python之斐波那契青蛙跳台阶、矩阵覆盖问题优化题目描述:(1)一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法。(2)一只青蛙一次可以跳上1级台阶,也可以跳上2 级……它也可以跳上n 级,此时该青蛙跳上一个n级的台阶总共有多少种跳法?问题一,简单分析可以得到一个斐波那契问题,解决方案有迭代和递归,还有在python中还可以用匿名函...原创 2018-03-14 23:41:52 · 967 阅读 · 0 评论 -
python实现二叉树非递归前中后序遍历
python实现二叉树非递归前中后序遍历二叉树是数据结构中重要的一部分,本文简单介绍用python实现二叉树的前中后序遍历,包括递归和非递归思路算法。先定义结点:class Node(object): """ 定义二叉树结点 """ def __init__(self, data): sel原创 2018-03-13 23:44:44 · 8702 阅读 · 6 评论 -
python实现冒泡排序及其优化
python实现冒泡排序及其优化冒泡排序是排序算法中比较基础的部分,简单原理就是 将数量大小比作轻重不同的气泡,轻的气泡会冒到重的气泡之上的思想最原始的排序代码如下:def BubbleSort(numList): if not len(numList): return for i in range(len(numList)): for...原创 2018-03-14 00:26:42 · 3157 阅读 · 0 评论 -
面试题之检查栈的压入弹出序列(Python实现)
面试题之检查栈的压入弹出序列(Python实现)题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路:利用一个辅助栈模拟栈的压入操作...原创 2018-04-08 13:27:24 · 340 阅读 · 0 评论 -
面试题之顺时针打印矩阵(Python实现)
面试题之顺时针打印矩阵(Python实现)问题描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,输入如下矩阵: 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 思路:每次打印并删除矩阵的第一行,然后将矩阵逆时针翻转90度,直至打印出全部结果具体代码实现如下:# coding:utf-8cla...原创 2018-04-09 17:42:51 · 4008 阅读 · 3 评论 -
利用双向循环链表实现任意长的整数进行加法运算
【问题描述】 设计一个实现任意长的整数进行加法运算的演示程序 。 【基本要求】 利用双向循环链表实现长整数的存储,每个结点含一个整形变量。输入和输出形式:按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开。 【测试数据】 (1)0;0;应输出“0”。 (2)-2345,6789;-7654,3211;应输出“-1,0000,0000”。 (3)-9999,9999;1,0000,000原创 2017-10-02 23:40:31 · 11677 阅读 · 10 评论