牛客网算法初级班
木木木木木木木木-
这个作者很懒,什么都没留下…
展开
-
牛客网_算法初级班_判断链表是否有环_返回两个无环的链表相交的第一个节点_返回两个有环的链表相交的第一个节点_python实现
一、判断链表是否有环 1、问题描述 给定一个链表,判断其是否有环 2、思路 两个方法: 借助哈希表 不借助hash表 3、python实现 方法一: 遍历链表得到节点 判断该节点是否是哈希表中的某一个key,若不是则加入,若是则返回即为第一个有环的节点 若遍历到最后遇到None,则不存在环 ''' 问题一:判断链表是否有环 ''' # Definition for singly-linke...原创 2019-11-04 12:17:20 · 235 阅读 · 0 评论 -
牛客网_算法初级班_Lesson3_part2_猫狗队列_转圈打印矩阵_旋转正方形矩阵_之字形打印矩阵_行列都排好序的矩阵中找数
一、猫狗队列 1、问题描述 宠物、狗和猫的类如下: public class Pet { private String type; public Pet(String type) { this.type = type; } public String getPetType() { return this.type; } } public class Dog extends Pet { public...原创 2019-11-02 12:11:12 · 215 阅读 · 0 评论 -
牛客网_算法初级班_Lesson3_part1_数组结构实现栈_数组结构实现队列_特殊栈可以返回栈中最小值_队列结构形成栈_栈结构形成队列_python语言描述
一、实现栈结构 问题描述:用数组结构实现大小固定的栈 如:给定长度为6的数组,形成一个长度为6的栈。限制长度,如果长度超过6给用户报错 1、方法 设置一个指针index指向数组“0号”位,加入元素,index++;弹出元素,index–; 2、python实现 class ArrayStack: ''' 问题一: 数组结构实现栈 ''' def __init...原创 2019-10-31 19:53:04 · 154 阅读 · 0 评论 -
牛客网_算法初级班_Lesson2_Part II_完全二叉树转为大根堆heapinsert_原先大根堆经过变化再回到大根堆heapify_堆排序_比较器的实现_相邻两数的最大差值--python语言
一、heapinsert 1.问题描述 数组本质就是完全二叉树,因此完全二叉树只是一种逻辑结构,实际结构其实是数组。那么给定一个数组,如何将其变成大根堆?这就是一个heapinsert过程。 方法: 父结点----(i-1)/2 左孩子-----2i+1 右孩子------2i+2 每从数组里拿出一个元素,就找该元素下标对应的父结点。比较大小,如果大于父结点,则和父结点互换,否则不动。 2.pyt...原创 2019-10-17 17:52:41 · 337 阅读 · 1 评论 -
牛客网_算法初级班_Lesson2_Part I_数组元素与target比较划分区域_荷兰国旗问题_改进后的经典快排_随机快排_python语言描述
一、数组元素与target比较划分区域 1.问题描述 给定一个target(目标值),依次和数组中的每一个数比较,如果小于或者等于target 就放进数组的左端,否则(也就是大于target),放在数组的右端。也就是把数组分成了两部分 2.思路 引入一个指针变量Less,指针变量左边的数全都是小于等于target,否则都放在指针变量的右边,这样既可完成划分。 步骤: 若cur(当前时刻的元素取值...原创 2019-10-17 15:37:06 · 246 阅读 · 0 评论 -
牛客网_算法初级班_Lesson3_Part I_比较器的实现_python、Java语言描述
一、问题背景 针对计算机的五种基本类型(int、float、double、string、char),各个语言都有自己的一套默认的比较函数(比如 sort函数)。但是在工程上,很多业务场景下需要我们自己定义类,并按照一定顺序排序(比如定义student类,里面有姓名、学号、成绩等等信息)。我们希望可以按照我们想要的方式进行排序(如果我们没有比较器,直接调用sort函数的话要么计算机按照存储地址排序,...原创 2019-10-15 14:40:52 · 147 阅读 · 0 评论 -
一种非比较排序稳定算法---桶排序
转载 2019-10-14 22:51:52 · 98 阅读 · 0 评论 -
牛客网_算法初级班_Lesson1_Part II_递归求数组最大值_归并排序_小和问题_逆序对问题_python语言描述
一、递归求数组最大值 递归行为就是说自己调用自己,但是它必须有一个离开条件,不然会陷入死循环。 递归的实质就是计算机自己进行压栈,执行到递归的地方则把父行为压进栈中,进而执行子行为;依次反复,直到执行到离开条件为止。 code: def getMax(array, L, R): ''' 利用递归行为:自己调用自己;求出一个数组中的最大值: 右边取得最大值,右边取得最...原创 2019-10-05 22:06:47 · 159 阅读 · 0 评论