08 2021 档案
摘要:描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: [[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16]] 则依次打印出数字 [1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,
阅读全文
摘要:描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串,包括数字字母符号,可以为空 返回值描述: 如果是合法的数值表达则返回该数字,否则返回0 示例1 输入: "+2147483647" 返回值: 214748
阅读全文
摘要:描述 现在有2副扑克牌,从扑克牌中随机五张扑克牌,我们需要来判断一下是不是顺子。有如下规则:1. A为1,J为11,Q为12,K为13,A不能视为142. 大、小王为 0,0可以看作任意牌3. 如果给出的五张牌能组成顺子(即这五张牌是连续的)就输出true,否则就输出false。例如:给出数据[6,
阅读全文
摘要:描述 请实现一个函数用来判断字符串str是否表示数值(包括科学计数法的数字,小数和整数)。 科学计数法的数字(按顺序)可以分成以下几个部分: 1.若干空格 2.一个整数或者小数 3.(可选)一个 'e' 或 'E' ,后面跟着一个整数(可正可负) 4.若干空格 小数(按顺序)可以分成以下几个部分:
阅读全文
摘要:描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 示例1 输入: 1,2 返回值: 3 解题思路: 二进制之间做加法是异或,二进制之间看有没有进位是按位与,然后左移,直到没有进位的时候,所得的数就是最后的值。 首先看十进制是如何做的: 5+7=12,三步走第一步:
阅读全文
摘要:描述 一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 示例1 输入: [1,4,1,6] 返回值: [4,6] 说明: 返回的结果中较小的数排在前面 解题思路: 两个相等的元素异或的结果为 0,而 0 与任意数 x 异或的结果都为 x。 对本题给的
阅读全文
摘要:描述 输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。 示例1 输入: 10 返回值: 2 解题思路: 首先要知道怎么求一个十进制数的二进制形式,通过辗转相除的形式得到二进制。当然我们这道题不是求它的二进制,只是为了求二进制中1的个数,我们只用把它的余数不断相加就是二进制形式中
阅读全文
摘要:描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的
阅读全文
摘要:描述 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 示例1 输入: 7 返回值: 8 解题思路:用一个大小为N的数组动态存储新算出来的丑数,然后通过计算2、3、5
阅读全文
摘要:描述 输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为 O(n). 示例1 输入: [1,-2,3,10,-4,7,2,-5] 返回值: 18 说明: 输入的数组为{1,-2,3,10,—4,7,2,一5},和最大的子数组为
阅读全文
摘要:描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,从同一个方向看总共有多少种不同的方法? 比如n=3时,2*3的矩形块有3种不同的覆盖方法(从同一个方向看): 输入描述: 2*1的小矩形的总个数n 返回值描述: 覆盖一个2*n的大矩形
阅读全文
摘要:输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 示例1 输入: "ab" 返回值: ["ab","ba"] 说明: 返回["ba","ab"]也是正确的 示例2 输入: "aab" 返回值: ["aab","aba","baa"] 示例3 输入: "abc" 返回
阅读全文
摘要:描述 地上有一个rows行和cols列的方格。坐标从 [0,0] 到 [rows-1,cols-1]。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于threshold的格子。 例如,当threshold为18时,机器人能够进
阅读全文
摘要:描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 \begin{bmatrix} a & b & c &e
阅读全文
摘要:描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0。不得使用库函数,同时不需要考虑大数问题,也不用考虑小数点后面0的位数。 示例1 输入: 2.00000,3 返回值: 8.00000 示例2
阅读全文
摘要:描述 统计一个数字在升序数组中出现的次数。 示例1 输入: [1,2,3,3,3,3,4,5],3 返回值: 4 解题思路: 我最开始的思路是找出这个数的所在位置,如果没有直接返回0,如果有,再用它现在的位置作为起始位置,进行左右循环访问,找出重复的数字个数。后来看了解析之后发现一种更简单的做法,直
阅读全文
摘要:描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 示例1 输入: [3,4,5,1,2] 返回值: 1 解题思路: 这道题考察的是二分查找算法。(1)如果数
阅读全文
摘要:描述 给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1,m<=n),每段绳子的长度记为k[1],...,k[m]。请问k[1]x...xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。 输入描
阅读全文
摘要:描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。如下图所示 注意: 1.要求不能创建任何新的结点,只能调整树中结点指针的指向。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继2.返回链表中的第一个节点的指针3.函数返回的TreeNode,有左右指针,其实可
阅读全文
摘要:描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树 平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 注:我们约定空树是平
阅读全文
摘要:描述 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 示例1 输入: {1,2,3,4,5,#,6,#,#,7} 返回值: 4 解题思路: 这道题的思路很简单,用递归;终止条件为当节点为空的时候,就返回0,否则返回左子树和右子
阅读全文
摘要:描述 请实现两个函数,分别用来序列化和反序列化二叉树,不对序列化之后的字符串进行约束,但要求能够根据序列化之后的字符串重新构造出一棵与原二叉树相同的树。 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序
阅读全文
摘要:描述 输入一颗二叉树的根节点和一个整数,按字典序打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 示例1 输入: {10,5,12,4,7},22 返回值: [[10,5,7],[10,12]] 示例2 输入: {10,5,12,4,
阅读全文
摘要:描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。(ps:我们约定空树不是二叉搜索树) 示例1 输入: [4,8,6,12,16,14,10] 返回值: true 解题思路:二叉搜索树是指它的左子树
阅读全文
摘要:描述 给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)例如:给定的二叉树是{1,2,3,#,#,4,5}该二叉树之字形层序遍历的结果是 [ [1], [3,2], [4,5] ] 示例1 输入: {1,2,3,#,#,4,5} 返回值: [[1],[3,
阅读全文
摘要:描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 示例1 输入: {5,4,#,3,#,2,#,1} 返回值: [5,4,3,2,1] 解题思路:这道题的思路是BFS,广度搜索算法,利用队列顺序存储每个节点的左孩子和右孩子,在扫到左孩子和右孩子的时候,依旧会按照顺序存储它们的孩子,就可以
阅读全文
摘要:描述 请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 示例1 输入: {8,6,6,5,7,7,5} 返回值: true 示例2 输入: {8,6,9,5,7,7,5} 返回值: false 思路解析:我的思路是判断这棵树是不是对称树,
阅读全文
摘要:描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 示例1 输入: {8,8,#,9,#,2,#,5},{8,9,#,2} 返回值: true 解题思路:这道题的主要思路是先判断根节点的值是否相等,(1)根节点值相等,再递归判断它的左子树和右子树是否相等
阅读全文
摘要:描述 给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的next指针。下图为一棵有9个节点的二叉树。树中从父节点指向子节点的指针用实线表示,从子节点指向父节点的用虚线表示 示例: 输入:{8,6,10,5,7,9,11},8
阅读全文
摘要:描述 给定某二叉树的前序遍历和中序遍历,请重建出该二叉树并返回它的头结点。 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。 提示: 1.0 <= pre.length <= 2000 2.vin.length == pre
阅读全文
摘要:描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)。 下图是一个含有5个结点的复杂链表。图中实线箭头表示nex
阅读全文
摘要:描述 输入一个链表,输出一个链表,该输出链表包含原链表中从倒数第k个结点至尾节点的全部节点。 如果该链表长度小于k,请返回一个长度为 0 的链表。 示例1 输入: {1,2,3,4,5},1 返回值: {5} 解题思路: 我的思路是最简单的思路,先找出链表的长度,然后再把头指针移动到倒数第k位输出即
阅读全文
摘要:描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 示例1 输入: {1,2,3,3,4,4,5} 返回值: {1,2,5} 解题思路: 之前的时候if(last.next
阅读全文
摘要:描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找
阅读全文
摘要:描述 给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。 例如,如果输入数组{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],
阅读全文
浙公网安备 33010602011771号