05 2020 档案

摘要:查找入职员工时间排名倒数第三的员工所有信息,为了减轻入门难度,目前所有的数据里员工入职的日期都不是同一天CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL,`first_name` varcha 阅读全文
posted @ 2020-05-27 20:47 Roronoa-Zoro 阅读(262) 评论(0) 推荐(0)
摘要:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。 输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。 思路:观察题目,我们可以 阅读全文
posted @ 2020-05-27 09:01 Roronoa-Zoro 阅读(433) 评论(0) 推荐(0)
摘要:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 思路:根据题意, 阅读全文
posted @ 2020-05-26 09:24 Roronoa-Zoro 阅读(525) 评论(0) 推荐(0)
摘要:给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。 思路:根据题目,遍历之后第三个结点是4,我们可以先看看各个遍历的结果 前序遍历:根左右 5 3 2 4 7 6 8 中序遍历:左根右 2 3 4 5 6 7 8 后序遍历 阅读全文
posted @ 2020-05-26 08:55 Roronoa-Zoro 阅读(244) 评论(0) 推荐(0)
摘要:题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 思路:如果根节点为空,直接返回一个空列表即可 如果不为空,我们可以设置一个循环,此时进入循环, 我们需要两个列表,一个记录当前层需要输出的元素,另一个记录下一层的节点(用条件判断,当左右子树存在的时候就记录下来) 记得更新循环 阅读全文
posted @ 2020-05-23 09:19 Roronoa-Zoro 阅读(220) 评论(0) 推荐(0)
摘要:题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 思路:由题目可以知道对称二叉树是指除了根节点运行左子树与右子树是对称的 即左子树的左节点与右子树的右节点相等,左子树的右节点与右子树的左节点相等 我们首先判断特殊情况,当根节点为空 阅读全文
posted @ 2020-05-23 09:13 Roronoa-Zoro 阅读(274) 评论(0) 推荐(0)
摘要:题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 思路 中序遍历:先左子树,根节点,右子树 1.节点右孩子存在,则设置一个指针从该节点的右孩子出发,一直沿着指向左子结点的指针找到的叶子节点即为下一个节点; 阅读全文
posted @ 2020-05-21 22:04 Roronoa-Zoro 阅读(222) 评论(0) 推荐(0)
摘要:题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 思路:前序遍历:先根节点,再左子树,最后右子树 中序 阅读全文
posted @ 2020-05-21 19:53 Roronoa-Zoro 阅读(230) 评论(0) 推荐(1)
摘要:题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长 阅读全文
posted @ 2020-05-20 20:38 Roronoa-Zoro 阅读(334) 评论(0) 推荐(0)
摘要:题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 # -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x): # self.val = x # self.next = None 阅读全文
posted @ 2020-05-20 16:39 Roronoa-Zoro 阅读(284) 评论(0) 推荐(0)
摘要:求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 思路:我们可以使用加法使用,不断递归即可 # -*- coding:utf-8 -*- class Solution: def Sum_Solution(s 阅读全文
posted @ 2020-05-20 11:41 Roronoa-Zoro 阅读(3061) 评论(0) 推荐(0)
摘要:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 思路:可以使用sum(),它可以对一个数组内部所有元素求和 # -*- coding:utf-8 -*- class Solution: def Add(self, num1, num2): # write code h 阅读全文
posted @ 2020-05-20 11:34 Roronoa-Zoro 阅读(194) 评论(0) 推荐(0)
摘要:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6, 阅读全文
posted @ 2020-05-20 10:29 Roronoa-Zoro 阅读(474) 评论(0) 推荐(0)
摘要:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 思路:既然是存在环,我们去循环遍历的时候,肯定能够再次读取到入口节点,我们根据这一点来写 代码如下: # -*- coding:utf-8 -*- # class ListNode: # def __init__(self, 阅读全文
posted @ 2020-05-20 09:18 Roronoa-Zoro 阅读(304) 评论(0) 推荐(0)
摘要:思路:之前我们要循环,不断改变区间来求中间元素位置来实现目标,现在我们使用递归的思想来解决这个 当数组为空,我们应该返回false,其它情况,进入主要部分 当中间元素为查找值时,直接返回true 当中间元素大于查找值时,我们让alist[:n]进入递归 当中间元素小于查找值时,我们让alist[n+ 阅读全文
posted @ 2020-05-19 16:06 Roronoa-Zoro 阅读(162) 评论(0) 推荐(0)
摘要:思路:二分查找仅仅适应于有序的数组,数组内部元素要是排好序的,整个过程就是不断跟中间元素进行比较,等于直接输出true,大于中间元素的话,说明可能在左边,我们可以将左边看成一个新数组,再找中间元素进行比较;不断循环进行。当一开始,找的数大于中间元素,我们把右边看成一部分,重新找中间元素进行比较,不断 阅读全文
posted @ 2020-05-19 15:48 Roronoa-Zoro 阅读(157) 评论(0) 推荐(0)
摘要:思路,将一个数组不断拆分,拆到一个元素之后,倒过来一步步排好序,获得新的数组 [55,23,66,905,56,85,356,30,57,34,832,230] left=[55,23,66,905,56,85] right=[356,30,57,34,832,230] left可以看成一个新数组, 阅读全文
posted @ 2020-05-18 17:43 Roronoa-Zoro 阅读(178) 评论(0) 推荐(0)
摘要:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 思路:我们新建一个字典,我们循环 阅读全文
posted @ 2020-05-18 11:43 Roronoa-Zoro 阅读(268) 评论(0) 推荐(0)
摘要:快速排序思路:将元素一个个找到他们在队列中的位置 我们可以用一个中间变量a保存第一个元素,一开始,从最后一个元素与中国元素进行比较,如果大于a的值,我们将high向左移动一下,如果小于a,我们将a[low]=a[high],a再与比较右边的元素比较,如果小于,我们将low向右移动一格,如果大于a,说 阅读全文
posted @ 2020-05-17 20:11 Roronoa-Zoro 阅读(166) 评论(0) 推荐(0)
摘要:思路:[256,35,96,2,34,65,732,653,20] 对于一个数组,我们不再像插入排序那个把它当成两个部分, 而是引入一个gap,假设gap=4,就会有 256 34 20 35 65 96 732 2 653 分成了上面所示的4个子序列 对于这些子序列进行插入排序,即 20 34 2 阅读全文
posted @ 2020-05-17 10:20 Roronoa-Zoro 阅读(189) 评论(0) 推荐(0)
摘要:思路:跟选择排序一样,将数据分为两部分,将第一个元素为固定的,有序的,剩下的元素都是无序的,将无序的第一个元素和之前有序的部分进行比较,变成有序的,以此类推 [25, 66,85,2,60] [25,66, 85,2,60] [25,66,85 2,60] [2,25,66,85 60] [2,25 阅读全文
posted @ 2020-05-15 22:18 Roronoa-Zoro 阅读(183) 评论(0) 推荐(0)
摘要:思路:1、选择排序是将其分成两部分,左边是排好序的,右边是还没排好的,一开始,左边就是空,我们让最小值的下标为移动比较的变量 即min_index=0来实现第一次的排序 选择排序的思路是一次找到没有排序那边中最小的数,把它放到左边0位置上 继续找到没有排序那边最小的数,放置左边1位置上,以此类推 从 阅读全文
posted @ 2020-05-15 21:25 Roronoa-Zoro 阅读(180) 评论(0) 推荐(0)
摘要:思路:可以将第一次排序过程先写出来,当第i个元素大于第i+1个元素时,将两个元素位置进行交换,等于小于都不需要做任何操作 0~n-1是因为这个过程始终是第i个元素与其后一个元素相比较,不需要移动到最后一个元素 def bubble_sort(alist): n=len(alist) for i in 阅读全文
posted @ 2020-05-15 17:09 Roronoa-Zoro 阅读(172) 评论(0) 推荐(0)
摘要:双向链表的操作 remove(item)删除链表中的元素 思路:1、需要循环遍历,循环条件为cur != None;同时需要判断cur.item等不等于item,等于进入循环,不等于移动指针,cur=cur.next 2、当删除元素对于当前cur指向时候,分情况考虑 a、第一个元素是要删除的元素,需 阅读全文
posted @ 2020-05-15 15:37 Roronoa-Zoro 阅读(689) 评论(0) 推荐(0)
摘要:双向链表的操作 search(item) 思路:在查找方面,双向链表跟单向链表并没有什么区别,一样的方法,遍历判断是否相等,不相等移动到下一个节点 class DLinkList(object): def __init__(self): self._head=None def search(self 阅读全文
posted @ 2020-05-14 17:18 Roronoa-Zoro 阅读(583) 评论(0) 推荐(0)
摘要:双向链表的操作 insert(pos,item) 特定位置pos添加元素item 思路:1、当pos<=0的时候,就是头部添加元素,这里用了封装的类,之前写过 url:https://www.cnblogs.com/cong3Z/p/12889535.html 2、当pos超过了当前链表的长度,认为 阅读全文
posted @ 2020-05-14 17:09 Roronoa-Zoro 阅读(457) 评论(0) 推荐(0)
摘要:双向链表的操作 append(item) 思路:1、当链表为空,直接让self.__head=node即可,因为node前面后面都没有节点 2、当链表不为空,进入循环,找到尾节点,循环条件为cur !=None ,不再进入时,cur指向尾节点,这时候,让cur.next=node及node.prev 阅读全文
posted @ 2020-05-14 16:43 Roronoa-Zoro 阅读(953) 评论(0) 推荐(0)
摘要:双向链表的操作 add(item)在头部添加一个新元素 思路:当链表为空,让self.__head=node即可 当链表不为空,要让链表中第一个节点向前指向新的节点self.__head.prev=node;此外,将新节点下一个指向原来的第一个节点,即node.next=self.__head 最后 阅读全文
posted @ 2020-05-14 16:26 Roronoa-Zoro 阅读(147) 评论(0) 推荐(0)
摘要:双向链表的操作 节点类的构造:这时候,一个节点存储三个信息:元素,指向下一个节点地址,指向上一个节点地址 is_empty()判断链表是否为空 length()计算链表长度 travel()遍历 这三种其实跟单向链表没有什么区别,当然可以把单向链表封装成类,减少重新写的麻烦 class Node(o 阅读全文
posted @ 2020-05-14 16:01 Roronoa-Zoro 阅读(179) 评论(0) 推荐(0)
摘要:单向循环链表的操作 remove(item) 删除元素 思路:1、当链表为空,直接返回即可 2、设置两个指针,一个指向当前节点,另一个指向前一个节点; 3、循环遍历,循环条件:cur.next != self.__head 4、进入循环,判断cur.item是否大于item 这时候分情况考虑,如果第 阅读全文
posted @ 2020-05-14 14:53 Roronoa-Zoro 阅读(170) 评论(0) 推荐(0)
摘要:单向循环链表的操作 search(item) 查找元素在不在链表当中 思路:1、当链表为空,直接返回False 2、循环遍历查找,循环条件:cur.next != self.__head 在循环里面进行判断 cur.item == item 3、当cur.next = self.__head的时候, 阅读全文
posted @ 2020-05-14 10:41 Roronoa-Zoro 阅读(134) 评论(0) 推荐(0)
摘要:单向循环链表的操作 add(item)在头部添加元素 思路:1、先将新节点添加到头部,让node.next=self.__head 以及让self.__head=node 2、进行遍历,循环条件: 最后一个节点现在指向第二个节点,即cur.next = node.next;找到最后一个节点之后,将c 阅读全文
posted @ 2020-05-14 10:27 Roronoa-Zoro 阅读(152) 评论(0) 推荐(0)
摘要:单向循环链表的操作 travel() 遍历链表中所有元素 思路:跟之前的单链表一样,循环输出即可;要注意的是最后一个节点时,此时cur.next指向头节点,而没有进入循环,而cur指向该节点,跳出循环后,单独把最后一个节点的元素打印出来就可以了(当链表中只有一个元素,也可以处理) 注意:同时也要考虑 阅读全文
posted @ 2020-05-14 10:01 Roronoa-Zoro 阅读(146) 评论(0) 推荐(0)
摘要:单向循环链表的操作 length()返回链表的长度 思路:当头节点为空的时候,直接返回0 其它情况下,先确定循环条件,之前单链表的cur != None这一条件不适用于此,因为最后一个节点会指向头节点,即此时是cur.next==self.__head 而cur==self.__head同样不可取, 阅读全文
posted @ 2020-05-14 09:49 Roronoa-Zoro 阅读(147) 评论(0) 推荐(0)
摘要:单向循环链表的操作 class SingleNode(object): def __init__(self,item): self.item=item self.next=None class SingleList(object): def __init__(self,node=None): sel 阅读全文
posted @ 2020-05-13 22:16 Roronoa-Zoro 阅读(177) 评论(0) 推荐(0)
摘要:单链表的操作 remove(item) 删除节点 思路:1、首先这需要遍历,需要找到这个元素 2、找到这个元素节点后,让前一个节点指向后一个节点就可以,用到两个指针,注意第一个元素是要删除的元素,要让头节点指向下一个节点 class SingleLinkList(object): def __ini 阅读全文
posted @ 2020-05-13 21:45 Roronoa-Zoro 阅读(120) 评论(0) 推荐(0)
摘要:单链表的操作 insert(pos, item) 指定位置添加元素 思路:1、当pos<0的时候,我们将其视为在头部添加元素 2、当pos远大于整个链表的长度,我们将视为在尾部添加元素 3、中间添加时,我们应该先让新节点的next指向原来pos处的节点,即node.next=(pos-1).next 阅读全文
posted @ 2020-05-13 20:52 Roronoa-Zoro 阅读(132) 评论(0) 推荐(0)
摘要:单链表的实现 1、add(item) 链表头部添加元素 class SingleNode(object): """单链表的结点""" def __init__(self,item): self.item=item self._head=None class SingleLinkList(object 阅读全文
posted @ 2020-05-12 20:37 Roronoa-Zoro 阅读(149) 评论(0) 推荐(0)
摘要:单链表的操作 search(item) 查找节点是否存在 1 class SingleLinkList(object): 2 def __init__(self): 3 self._head=None 4 def search(self,item): 5 #判断节点存在是否 6 cur=self._ 阅读全文
posted @ 2020-05-12 20:19 Roronoa-Zoro 阅读(108) 评论(0) 推荐(0)
摘要:单链表的操作 is_empty() 链表是否为空 length() 链表长度 travel() 遍历整个链表 class SingleLinkList(object): #单向链表 def __init__(self): self._head=None def is_empty(self): ret 阅读全文
posted @ 2020-05-12 20:10 Roronoa-Zoro 阅读(149) 评论(0) 推荐(0)
摘要:链表及顺序表都属于线性表 顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时又需要进行数据的搬迁,所以使用起来并不是很灵活。链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。 链表:链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是不像顺序表一样连 阅读全文
posted @ 2020-05-10 20:06 Roronoa-Zoro 阅读(107) 评论(0) 推荐(0)
摘要:一、顺序表的基本形式:数据元素本身连续存储,每个元素所占的存储单元大小固定相同,元素的下标是其逻辑地址,而元素存储的物理地址(实际内存地址)可以通过存储区的起始地址(假设为0x11)加上逻辑地址(第i个元素)与存储单元大小(c)(int型4个字节,char型1个字节)的乘积计算得到 即:0x11+4 阅读全文
posted @ 2020-05-10 19:52 Roronoa-Zoro 阅读(710) 评论(0) 推荐(0)
摘要:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 比如n=3时,2*3的矩形块有3种覆盖方法 思路:n=0,f=0 n=1,f=1 n=2,f=2 n=3,f=3 n=4,f=5 当n>2时,其实就是斐波那契数列,需要单 阅读全文
posted @ 2020-05-09 20:14 Roronoa-Zoro 阅读(146) 评论(0) 推荐(0)
摘要:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 思路:n=1,f=1 n=2,f=2(1;2) n=3,f=4(111;12;21;3) n=4,f=5(11111,121,112,211,4,13,31) 由规律可知n=k(k>1)时 阅读全文
posted @ 2020-05-09 19:55 Roronoa-Zoro 阅读(185) 评论(0) 推荐(0)
摘要:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 思路:n=1, f=1 n=2,f=2(11;2) n=3,f=3(111;12;21) n=4,f=5(1111,22,121,211,112) 实际上就是一个斐波那契数列 注意 阅读全文
posted @ 2020-05-09 19:35 Roronoa-Zoro 阅读(116) 评论(0) 推荐(0)
摘要:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 思路:循环取值,当取得的是空格时,对其重新赋值 # -*- coding:utf-8 -*- class Solution: # s 源字符 阅读全文
posted @ 2020-05-09 15:06 Roronoa-Zoro 阅读(110) 评论(0) 推荐(0)
摘要:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<=39 思路:由题意,斐波那契数列为:0,1,2,3,5,8,......... 当n=0时,f=0 当n=1时,f=1 当n>=2时,f=f(n-1)+f(n-2)(这里当然可以用 阅读全文
posted @ 2020-05-09 14:57 Roronoa-Zoro 阅读(163) 评论(0) 推荐(0)
摘要:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路:跟左下角的数据进行比较,大于这个数就向左边比较,小于这个数就向上比较,等于就输出true, 数组中的 阅读全文
posted @ 2020-05-09 14:43 Roronoa-Zoro 阅读(119) 评论(0) 推荐(0)
摘要:1、GET:获取资源(GET方法用来请求URL指定的资源。指定的资源经服务器端解析后返回响应内容。) 2、POST:传输实体主题(POST方法用来传输实体的主体。) 3、PUT:传输文件(PUT方法用来传输文件。就像FTP协议的文件上传一样,要求在请求报文主体中包含文件的内容,然后保存到请求URL指 阅读全文
posted @ 2020-05-08 10:22 Roronoa-Zoro 阅读(404) 评论(0) 推荐(0)