
数据结构
银-TaMa
吾王美如画
展开
-
约瑟夫环
约瑟夫环很老的问题了 这是问题描述 设有编号为1,2,…,n的n(n>0)个人围成一个圈,每个人持有一个密码m。从第一个人开始报数,报到m时停止报数,报m的人出圈,再从他的下一个人起重新报数,报到m时停止报数,报m的出圈,……,如此下去,直到所有人全部出圈为止。当任意给定n和m后,设计算法求n个人出圈的次序。 基本要求 建立模型,确定存储结构。 对任意n个人,密码为m,实现原创 2017-10-07 14:26:49 · 411 阅读 · 0 评论 -
最大子序和 优先队列
题目描述 输入一个长度为 nn 个数找到最大子序和。输出 一个数,数出他们的最大子序和。样例输入6 41 -3 5 1 -2 3样例输出7数据规模与约定 时间限制:1 s 内存限制:256 M 100% 的数据保证 1≤n≤3000001≤n≤300000因为是求子数组的和,所以先进行一个前缀和的处理,然后,使用一个单调队列来维护区间的...原创 2019-07-07 10:49:29 · 162 阅读 · 0 评论 -
leedcode 53. 最大子序和
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。这个就是维护一个最小的前缀和,然后判断当前的前缀和和最小前缀和的差值是否可更新ans注意问题1 前缀和初始化为0 ,为了保证求所有元素的和的情况。2 ...原创 2019-07-06 23:13:49 · 126 阅读 · 0 评论 -
【数据结构回顾】快速选择
问题:给定一个数组,对于某个区间,找出其中第 kkk 大的元素。针对这个问题,有一个经典的算法被称为 快速选择算法,它可以在 O(n)\mathcal{O}(n)O(n) 的时间复杂度内找出区间内第 kkk 大元素。还记得快速排序中的一个步骤——划分区间么?经过一个 O(n)\mathcal{O}(n)O(n) 复杂度的区间划分过程,可以将数组分为两部分,第一部分的元素值都小于等于 pivot...原创 2019-07-06 12:46:55 · 216 阅读 · 0 评论 -
【数据结构回顾】二分法
普通情况:给出一个升序的数组 numnumnum,数组长度为 lenlenlen。补全binary_search函数,判断数组num中是否存在元素target,若存在则返回该数字在数组中的 下标,否则返回 −1-1−1。min 指向头,max 指向尾,mid 为(min + max) / 2当min >= max 时候终止循环如果arr[mid] < target , min ...原创 2019-07-05 20:51:40 · 264 阅读 · 0 评论 -
【leetcode】71. 简化路径
以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜...原创 2019-07-14 13:32:16 · 131 阅读 · 0 评论 -
【leetcode】43. 字符串相乘
题目给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"...原创 2019-07-14 12:35:55 · 115 阅读 · 0 评论 -
【leetcode】76. 最小覆盖子串
题目给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串。示例:输入: S = &“;ADOBECODEBANC&”;, T = "ABC"输出: "BANC"说明: 如果 S 中不存这样的子串,则返回空字符串 ""。 如...原创 2019-07-14 11:12:25 · 95 阅读 · 0 评论 -
【leetcode 】128. 最长连续序列 ,并查集 + hash
题目给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-consecutive-sequence思...原创 2019-07-13 20:29:40 · 359 阅读 · 0 评论 -
leetcode 54. 螺旋矩阵
54. 螺旋矩阵给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]思路是 方向数组 + 边界调整class Solution {public: int dir[4][2] = {...原创 2019-07-01 15:26:39 · 125 阅读 · 0 评论 -
[数据结构 回顾]线性表的实现
线性表的实现先上代码:/************************************************************************* > File Name: 1.vector.cpp > Author:Gin.TaMa > Mail:1137554811@qq.com > Created Time: 2019年04月0...原创 2019-04-10 15:58:50 · 137 阅读 · 0 评论 -
中缀表达式求值-超级简单的递归栈的实现
问题我就不描述了二叉树我也不累述了回顾一下中缀表达式转换二叉树的过程 同时结合 二叉树的是自底向上计算的性质,我们能得到什么呢即 :优先计算的表达式在二叉树的底部,换句话说权值越高,其在二叉树的位置就越低,即 自底向上计算的时候也就越先运算。但是 对于递归栈来说,是自顶向下生成的也就是说,在生成表达式二叉树的时候,我们是先找到这个表达式里的权值最小的那个操作符,然后递归的得到左右子树的值...原创 2018-11-21 13:56:35 · 1299 阅读 · 0 评论 -
哈夫曼编码
#pragma once#include<iostream>#include<fstream>#include<string>using namespace std;void numberoff(char *ma, double* maweight, int& coutnum, int &i){ ifstream fcin; fcin.open("C:\\Users\\jl原创 2017-10-21 22:35:18 · 253 阅读 · 0 评论 -
魔方阵
今天上传下魔方阵魔方阵是一个古老的智力问题,它要求在一个m×m的矩阵中填入1~m2的数字(m为奇数),使得每一行、每一列、每条对角线的累加和都相等,如图1所示。 15 8 1 24 17 16 14 7 5 23 22 20 13 6 4 3 21 19 12 10 9 2 25 18 11 图1 五阶魔方阵示例原创 2017-10-21 22:30:22 · 981 阅读 · 0 评论 -
表达式求值
后缀表达式 前缀表达式 中缀表达式求值及相互转换原创 2017-10-07 17:00:05 · 501 阅读 · 0 评论 -
【洛谷】P3952 时间复杂度 题解
题目小明正在学习一种新的编程语言 A++,刚学会循环语句的他激动地写了好多程序并 给出了他自己算出的时间复杂度,可他的编程老师实在不想一个一个检查小明的程序, 于是你的机会来啦!下面请你编写程序来判断小明对他的每个程序给出的时间复杂度是否正确。A++语言的循环结构如下:F i x y循环体E其中F i x y表示新建变量 ii(变量 ii 不可与未被销毁的变量重名)并初始化为 xx, ...原创 2019-10-10 13:56:18 · 674 阅读 · 0 评论