随笔分类 -  算法面试题

python系列
摘要:题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 ''' 首先判断n是不是负数,当n为负数的时候,直接用后面的while循环会导致死循环,因为负数 向左移位的话最高位补1 ! 因此需要一点点特殊操作,可以将最高位的符号位1变成0,也就 是n & 0xffffffff,这样就 阅读全文
posted @ 2019-12-15 09:08 ayew 阅读(184) 评论(0) 推荐(0)
摘要:题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 保证base和exponent不同时为0 思路 求base的exponent次方,exponent有两种可能性, exponent>0 for循环exponent次,结果与bas 阅读全文
posted @ 2019-12-15 08:57 ayew 阅读(166) 评论(0) 推荐(0)
摘要:-斐波那契数列- 大家都知道斐波那契数列(1、1、2、3、5、8、13、21、34、……),现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 斐波那契数列满足递归的条件:既F(n) = F(n-1)+F(n-2) # -*- coding:utf-8 -*- 阅读全文
posted @ 2019-12-14 17:10 ayew 阅读(262) 评论(0) 推荐(0)
摘要:题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 思路 由题意所知 阅读全文
posted @ 2019-12-13 10:06 ayew 阅读(298) 评论(0) 推荐(0)
摘要:题目描述 给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 思路 第一步,用两个快慢指针找环中相汇点。分别用slow, fast指向链表头部,slow每次走一步,fast每次走二步,直到fast == slow找到在环中的相汇点。第二步,找环的入口。当fast == slo 阅读全文
posted @ 2019-12-13 09:40 ayew 阅读(219) 评论(0) 推荐(0)
摘要:题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 思路: 如果该链表当前节点与下一节点为空,则返回前当前节点。 否则,比较这两个节点的val,使用递归, 如果 当两节 阅读全文
posted @ 2019-12-10 09:37 ayew 阅读(169) 评论(0) 推荐(0)
摘要:题目描述 输入两个链表,找出它们的第一个公共结点。 class Solution: def FindFirstCommonNode(self, pHead1, pHead2): # write code here lst1 = [] lst2 = [] result = [] if not pHea 阅读全文
posted @ 2019-12-10 09:19 ayew 阅读(136) 评论(0) 推荐(0)
摘要:题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 思路: 有两个指针与一个值。 在复制该链表之前,首先初始化一个链表 # - 阅读全文
posted @ 2019-12-09 09:53 ayew 阅读(146) 评论(0) 推荐(0)
摘要:题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长 阅读全文
posted @ 2019-12-09 09:25 ayew 阅读(397) 评论(0) 推荐(0)
摘要:题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 # -*- coding:utf-8 -*- class Solution: def __init__(self): self.stack = [] self.minstack = [] 阅读全文
posted @ 2019-12-06 10:53 ayew 阅读(142) 评论(0) 推荐(0)
摘要:题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 # -*- coding:utf-8 -*- class Solution: def __init__(self): self.stack1 = [] self.stack2 = [] def push( 阅读全文
posted @ 2019-12-06 10:40 ayew 阅读(207) 评论(0) 推荐(0)
摘要:题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路: 首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查 阅读全文
posted @ 2019-12-06 10:05 ayew 阅读(444) 评论(0) 推荐(0)
摘要:题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 把链表依次放入list里面,反向打印 # -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x): # self.val = x # self.next = 阅读全文
posted @ 2019-12-06 09:22 ayew 阅读(134) 评论(0) 推荐(0)
摘要:题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 思路: 平衡二叉树 (AVL)平衡二叉树是一种二叉排序树,其中每个结点的左子树和右子树的高度差至多等于1。它是一种高度平衡的二叉排序树。意思是说,要么它是一棵空树,要么它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过 阅读全文
posted @ 2019-11-28 11:23 ayew 阅读(302) 评论(0) 推荐(0)
摘要:题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。、 1 # -*- coding:utf-8 -*- 2 # class TreeNode: 3 # def __init__(self, x): 4 # self.val = 阅读全文
posted @ 2019-11-28 11:07 ayew 阅读(702) 评论(0) 推荐(0)
摘要:题目描述 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) # -*- coding:utf-8 -*- # class TreeNode: # 阅读全文
posted @ 2019-11-28 10:23 ayew 阅读(221) 评论(0) 推荐(0)
摘要:题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 递归法: 先判断左子树是否存在 再判断右子树是否存在 然后递归判断左子树右子树是否为二叉树 # -*- coding:utf-8 -*- class 阅读全文
posted @ 2019-11-27 11:12 ayew 阅读(247) 评论(0) 推荐(0)
摘要:题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5思路:使用递归将左右子树交换 # -*- coding:utf-8 -*- # c 阅读全文
posted @ 2019-11-27 09:56 ayew 阅读(327) 评论(0) 推荐(0)
摘要:题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 思路 空树不是任意一个树的子结构,如果 root1 与root2 中有一个为空树的话,返回False 判断是否存在子树: 当rootA的值与rootB一致时,B是A的子结构(且A的左子树等于B左子树 阅读全文
posted @ 2019-11-27 09:32 ayew 阅读(744) 评论(0) 推荐(0)
摘要:二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。 题目描 阅读全文
posted @ 2019-11-21 19:34 ayew 阅读(468) 评论(0) 推荐(0)