数据结构
文章平均质量分 60
沙漏dan
我感受到的压力都是来自于我自己不努力不积极而又不甘于现状的恐慌
展开
-
hash冲突解决方法
1. 开放定址法2. 拉链法3. 在哈希法开放定址法和拉链法对比:拉链法的优点:(1)处理冲突简单,没有堆积现象,平均查找长度较短(2)拉链法中的链表上的节点空间是动态申请的,更适合于创造表之前无法确定表长的情况(3)开放定址法为了减少冲突,要求装填因子较小,节点规模大时会浪费空间,结点较大时,拉链法中增加的指针域可以忽略不计,节省空间(4)用拉链法构造的散列表中,...原创 2019-04-23 09:48:42 · 165 阅读 · 0 评论 -
0-1背包问题
N,C=[int(each) for each in input().split()]data=[]for i in range(N): data.append([int(a) for a in input().split()])################# 0-1 背包##################dp=[[0 for j in range(C+1)] for i...原创 2018-09-04 13:48:09 · 118 阅读 · 0 评论 -
牛客网 最大的奇约数
题目:最大的奇约数小易是一个数论爱好者,并且对于一个数的奇数约数十分感兴趣。一天小易遇到这样一个问题: 定义函数f(x)为x最大的奇数约数,x为正整数。 例如:f(44) = 11.现在给出一个N,需要求出 f(1) + f(2) + f(3).......f(N)例如: N = 7 f(1) + f(2) + f(3) + f(4) + f(5) + f(6) + f(7) = 1 +...原创 2018-08-29 21:10:00 · 192 阅读 · 0 评论 -
牛客网 暗黑的字符串
题目:暗黑字符串题目描述一个只包含'A'、'B'和'C'的字符串,如果存在某一段长度为3的连续子串中恰好'A'、'B'和'C'各有一个,那么这个字符串就是纯净的,否则这个字符串就是暗黑的。例如:BAACAACCBAAA 连续子串"CBA"中包含了'A','B','C'各一个,所以是纯净的字符串AABBCCAABB 不存在一个长度为3的连续子串包含'A','B','C',所以是暗黑的字符...转载 2018-08-29 20:09:43 · 168 阅读 · 0 评论 -
哈夫曼树(Huffman Tree)
给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。结点的带权路径长度:在一棵树中,如果其结点上附带有一个权值,通常把该结点的路径长度与该结点上的权值之积称为该结点的带权路径长度(weighted path length)。树的带权路径长度...转载 2018-08-21 20:52:00 · 835 阅读 · 0 评论 -
小Q的歌单
题目给一个歌单固定长度为K 有两种歌:X首长度为A,Y首长度为B的歌,A!=B 问有几种组合搭配 如: 输入 K = 5,A = 2 X = 3 B = 3 Y = 3 输出 9 由于结果比较大,因此输出结果取1000000007的余数。解析:小Q的歌单K = int(input())list = list(map(int,input().split(' ')))...转载 2018-08-31 22:46:25 · 285 阅读 · 0 评论 -
牛客网 跳石板
题目:跳石板题目描述小易来到了一条石板路前,每块石板上从1挨着编号为:1、2、3.......这条石板路要根据特殊的规则才能前进:对于小易当前所在的编号为K的 石板,小易单次只能往前跳K的一个约数(不含1和K)步,即跳到K+X(X为K的一个非1和本身的约数)的位置。 小易当前处在编号为N的石板,他想跳到编号恰好为M的石板去,小易想知道最少需要跳跃几次可以到达。例如:N = 4,M =...原创 2018-08-28 22:08:34 · 380 阅读 · 0 评论 -
牛客网 构造队列
题目:构造队列题目描述小明同学把1到n这n个数字按照一定的顺序放入了一个队列Q中。现在他对队列Q执行了如下程序:while(!Q.empty()) //队列不空,执行循环{ int x=Q.front(); //取出当前队头的值x Q.pop(); //弹出当前队头 Q....转载 2018-08-28 20:05:07 · 195 阅读 · 0 评论 -
牛客网 合唱团
题目描述有 n 个学生站成一排,每个学生有一个能力值,牛牛想从这 n 个学生中按照顺序选取 k 名学生,要求相邻两个学生的位置编号的差不超过 d,使得这 k 个学生的能力值的乘积最大,你能返回最大的乘积吗?输入描述:每个输入包含 1 个测试用例。每个测试数据的第一行包含一个整数 n (1 <= n <= 50),表示学生的个数,接下来的一行,包含 n 个整数,按顺序表示每...转载 2018-08-21 14:25:13 · 617 阅读 · 0 评论 -
牛客网 分田地
题目:分田地输入描述:每个输入包含 1 个测试用例。每个测试用例的第一行包含两个整数 n 和 m(1 <= n, m <= 75),表示田地的大小,接下来的 n 行,每行包含 m 个 0-9 之间的数字,表示每块位置的价值。输出描述:输出一行表示牛牛所能取得的最大的价值。示例1输入4 43332323333322323输出2解答...转载 2018-08-23 10:58:40 · 307 阅读 · 0 评论 -
牛客网 数字游戏
题目:数字游戏题目描述小易邀请你玩一个数字游戏,小易给你一系列的整数。你们俩使用这些整数玩游戏。每次小易会任意说一个数字出来,然后你需要从这一系列数字中选取一部分出来让它们的和等于小易所说的数字。 例如: 如果{2,1,2,7}是你有的一系列数,小易说的数字是11.你可以得到方案2+2+7 = 11.如果顽皮的小易想坑你,他说的数字是6,那么你没有办法拼凑出和为6 现在小易给你n个数,让你...转载 2018-08-27 10:17:50 · 254 阅读 · 0 评论 -
牛客网 数列还原
题目:数列还原题目描述牛牛的作业薄上有一个长度为 n 的排列 A,这个排列包含了从1到n的n个数,但是因为一些原因,其中有一些位置(不超过 10 个)看不清了,但是牛牛记得这个数列顺序对的数量是 k,顺序对是指满足 i < j 且 A[i] < A[j] 的对数,请帮助牛牛计算出,符合这个要求的合法排列的数目。输入描述:每个输入包含一个测试用例。每个测试用例的第一行包...原创 2018-08-25 18:49:10 · 202 阅读 · 0 评论 -
LRU Cache
转载自 [leetcode]LRU Cache @ Pythonclass Node: # 双向链表中节点的定义 def __init__(self, k, x): self.key = k self.val = x self.prev = None self.next = Noneclass Doub...转载 2018-09-04 20:11:43 · 83 阅读 · 0 评论 -
Same Tree
/** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNode left; * public TreeNode right; * public TreeNode(int x) { val = x; } * }...原创 2016-06-03 19:23:00 · 74 阅读 · 0 评论 -
Excel Sheet Column Number
public class Solution { public int TitleToNumber(string s) { int result=0; char[] sarr=s.ToCharArray(); for(int i=0;i<s.Length;i++){ result=result*26+(sarr[...原创 2016-06-03 19:33:00 · 86 阅读 · 0 评论 -
数据结构与算法2016-06-02
1. 一个算法的时间复杂度是指该算法的运行时间与问题规模的对应关系。一个算法是由控制结构和原操作构成的,其执行的时间取决于二者的综合效果。为了便于比较同一问题的不同算法,通常把算法中基本操作重复执行的次数(频度)作为算法的时间复杂度。算法中的基本操作一般是指算法中最深层循环内的语句,因此,算法中基本操作语句的频度是问题规模n的某个函数f(n),记作T(n)=O(f(n))。如果一个算法没有循环...原创 2016-06-03 18:43:00 · 122 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面
题目源自于牛客网:思路一:用类似冒泡的思路,每次循环,如果相邻的两个数,前者为偶数,后者为奇数,则两者交换思路二:类似插入排序的思路,每次循环,从做到右找奇数,找到第一个奇数,就把它移到前面去,把前面的数字移后思路三:借用另外两个数组,分别存储奇数和偶数,最后将两个数组合并思路四:借用队列,从左到右找偶数,每找到一个偶数,就将其放在队尾,从右到左找奇数,找到一个就放在队首。思路...原创 2018-09-10 15:20:21 · 203 阅读 · 0 评论 -
数值的整数次方
快速求幂算法解法来自于:牛客网-试题广场-数值的整数次方public class Solution { public double Power(double base, int exponent) { int n=Math.abs(exponent); if(n==0) return 1; if(n==1...原创 2018-09-10 15:01:20 · 87 阅读 · 0 评论 -
只用位运算不用算术运算实现整数的加减乘除运算
参考自程序员代码面试指南题目:确定两个32位整数a和b,可正可负、可0。不能使用算术运算符,分别实现a和b的加减乘除运算。要求:如果给定的a和b执行加减乘除的某些结果本来就会导致数据的溢出,那么你实现的函数补习对那些结果负责。用位运算实现加法运算,如果在不考虑进位的情况下,a^b就是正确结果,因为0加0位0(0&0),0加1位1(0&1),1加0为1(1&...转载 2018-09-12 15:07:22 · 995 阅读 · 1 评论 -
其他数都出现了k次的数组中找到只出现一次的数
参考自程序员代码面试指南题目:给定一个整型数组,和一个大于1的整数k,已知arr中只有一个数出现了一次,其他的数都出现了k次,请返回只出现一次的数。要求:时间复杂度为O(N),额外空间复杂度为O(1);下面的例子是两个七进制数的无进位相加:a: 6 4 3 2 6 0 1b: 3 4 5 0 1 1 1r: 2 1 1 2 0 1 2(结果)两个七进制的a和b,...转载 2018-09-12 12:13:18 · 620 阅读 · 0 评论 -
在其他数都出现偶数次的数组中找到出现次数为奇数次的数
参考自程序员代码面试指南其他数都出现偶数次的数组中找到出现奇数次的数字 整数n与0异或的结果为n,n与n异或的结果为0public void printOddTimesNum1(int[] arrs){ int eO=0; for(int x:arrs){ eO=eO^x; } System.o...原创 2018-09-12 10:02:36 · 1184 阅读 · 0 评论 -
整数的二进制表达式中有多少个1
题目:给定一个32位整数n,可为0,可为正,也可为负,返回该整数二进制表达中1的个数解法:一、最简单的解法整数n每次进行无符号右移一位,检查最右边的bit是否为1来进行统计,代码如下:public int count1(int n){ int res=0; while(n!=0){ res+=n&1; n>>...转载 2018-09-09 09:13:44 · 934 阅读 · 0 评论 -
牛客网 旋转数组的最小值
题目:旋转数组的最小值把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。第一种思路是提交了的代码中的最上边的几种解法第二种思路来自于一本书,总体是采用的二分的思想...原创 2018-09-08 21:48:40 · 164 阅读 · 0 评论 -
牛客网 地牢逃脱
题目:地牢逃脱题目描述给定一个 n 行 m 列的地牢,其中 '.' 表示可以通行的位置,'X' 表示不可通行的障碍,牛牛从 (x0 , y0 ) 位置出发,遍历这个地牢,和一般的游戏所不同的是,他每一步只能按照一些指定的步长遍历地牢,要求每一步都不可以超过地牢的边界,也不能到达障碍上。地牢的出口可能在任意某个可以通行的位置上。牛牛想知道最坏情况下,他需要多少步才可以离开这个地牢。输入描...转载 2018-08-22 11:43:05 · 234 阅读 · 0 评论 -
牛客网 正则表达式匹配
题目:请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配解答:参考 正则表达式# -*- coding:utf-8 -*-class ...转载 2018-08-08 17:01:40 · 282 阅读 · 0 评论 -
牛客网 构建乘积数组
题目:给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。解法:参考构建乘积数组,思路如下:解释下代码,设有数组大小为5。对于第一个for循环第一步:b[0] = 1;第二步:b[1] = b[0] * a[0] = a[0]...转载 2018-08-08 16:39:37 · 204 阅读 · 0 评论 -
Python数据结构与算法笔记(1)
ADT参考:01_抽象数据类型和面向对象编程数据结构与算法--ADTADTADT(abstract data type)是由用户定义的数据类型,它制定了一组数据值的集合及可作用在这些数据值上的一组操作。ADT的定义与它的具体实现无关,因此只关注如何使用它,无需关注它的具体实现。ADT可以被看做一个黑盒子。用户程序与ADT实例的交互是通过调用定义在ADT接口上的操作进行的...原创 2018-08-02 21:02:34 · 239 阅读 · 0 评论 -
牛客网 二叉树中和为某一值的路径
题目:输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)解答:参考 二叉树中和为某一值的路径# class TreeNode:# def __init__(self, x):# self.val = x...转载 2018-08-07 10:32:31 · 208 阅读 · 0 评论 -
牛客网 从上往下打印二叉树
题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。解法:最直接的想法就树的广度遍历,解题思路参考树的广度优先遍历# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# ...原创 2018-08-07 09:26:55 · 196 阅读 · 0 评论 -
Leetcode Container With Most Water
题目:Container With Most WaterGiven n non-negative integers a1, a2, ..., an , where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is a...转载 2018-08-14 19:24:38 · 133 阅读 · 0 评论 -
Leetcode Regular Expression Matching
题目:Regular Expression MatchingGiven an input string (s) and a pattern (p), implement regular expression matching with support for '.' and '*'.'.' Matches any single character.'*' Matches zero or...转载 2018-08-14 19:06:52 · 131 阅读 · 0 评论 -
Leetcode Palindrome Number
题目:Palindrome NumberDetermine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.Example 1:Input: 121Output: trueExample 2:Input: -...转载 2018-08-14 18:44:57 · 118 阅读 · 0 评论 -
Leetcode String to Integer (atoi)
题目:String to Integer (atoi)Implement atoi which converts a string to an integer.The function first discards as many whitespace characters as necessary until the first non-whitespace character is f...转载 2018-08-14 17:04:25 · 136 阅读 · 0 评论 -
Python数据结构与算法笔记(6)
problem-solving-with-algorithms-and-data-structure-using-python 中文版7 图和图的算法顶点 边 权重 路径 循环 没有循环的图形称为非循环图没有循环的有向图称为有向无环图或DAG。图抽象数据类型如下:graph()创建一个新的空图 addVerter(vert)向图中添加一个顶点实例 addEdge(f...原创 2018-08-04 16:53:14 · 392 阅读 · 0 评论 -
Python数据结构与算法笔记(5)
problem-solving-with-algorithms-and-data-structure-using-python 中文版6 树和树的算法树的属性:分层 一个节点的子节点独立于另一个节点的子节点 每个叶节点是唯一的分析树可以用于表示诸如句子或数学表达式的真实世界构造。前序、中序、后序遍历前序遍历中,我们首先访问根节点,然后递归地做左侧子树的前序遍历,随后是...原创 2018-08-04 15:38:21 · 217 阅读 · 0 评论 -
Python数据结构与算法笔记(4)
problem-solving-with-algorithms-and-data-structure-using-python 中文版5 排序和搜索顺序查找当数据项存储在诸如列表的集合中时,我们说它们具有线性或顺序关系。每个数据项都存储在相对与其他数据项的位置。在Python列表中,这些相对位置是单个项的索引值。由于这些索引值是有序的,我们可以按顺序访问它们。这个过产生了顺序查...原创 2018-08-03 22:25:25 · 267 阅读 · 0 评论 -
牛客网 复杂链表的复制
题目:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)解答:思路参考:《苦练算法》-剑指Offer- 二十五、复杂链表的复制 -python编写先复制原来链表复制相互之间的random关系将两个链表拆分...转载 2018-08-07 15:36:39 · 233 阅读 · 0 评论 -
Python数据结构与算法笔记(2)
problem-solving-with-algorithms-and-data-structure-using-python 中文版3 基本数据结构栈、队列、deques、列表是一类数据的容器,它们数据项之间的顺序由添加或删除的顺序决定。一旦一个数据项被添加,它相对于前后元素一直保持该位置不变。诸如此类的数据结构被称为线性数据结构。线性数据结构有两端,有时候被称为左右、某些情况被...原创 2018-08-03 11:19:54 · 337 阅读 · 0 评论 -
牛客网 不用加减乘除做加法
题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。解答:看到题目,最直接的想法应该是按照二进制的计算,然而看到好多人提交的是用sum()函数。二进制计算方法,参考:Python 解决面试题47 不用加减乘除做加法# -*- coding:utf-8 -*-class Solution: def Add(self, num1, num...原创 2018-08-08 15:13:08 · 207 阅读 · 0 评论 -
牛客网 和为S的两个数字
题目:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出:对应每个测试案例,输出两个数,小的先输出。解法:自己的想法是一个标记指向最小值,然后判断sum-array[low]是否在数组中,如果在计算积并存储,最终输出积最小的结果。class Solution: def FindNu...原创 2018-08-08 12:14:43 · 178 阅读 · 0 评论