自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 如何用java PriorityQueue 建立最小堆、最大堆

1、PriorityQueue默认情况下建立的是最小堆,堆顶元素是最小值。如果输出这个堆,得到的序列是递增的。2、可以自定义比较器,使得PriorityQueue建立最大堆,堆顶元素是最大值,如果输出这个堆,得到的序列是递减的。首先看一下PriorityQueue在默认的情况下是如何使用的:import java.util.PriorityQueue; public class Test9 { public static void main(String[] args) { int

2021-03-10 16:20:36 1228

原创 找出最小的K个数

题目描述给定一个数组,找出其中最小的K个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。如果K>数组的长度,那么返回一个空的数组时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 64M,其他语言128M解题思路:这题可以用上所有的排序算法,但是某些算法的时间复杂度比较高,需要改编一下解法1:修改冒泡排序,时间复杂度为O(n*k)import java.util.ArrayList;public class Solut.

2021-03-10 14:47:42 281

原创 二叉搜索树改为双向链表

题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 64M,其他语言128M解题思路:最容易想到的就是中序遍历二叉树,用...

2021-03-08 23:24:30 194

原创 栈的压入、弹出序列

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 64M,其他语言128M解题思路:判断一个序列是否使正确的弹栈序列,核心思想是先进后出。用一个辅助栈S模拟弹栈出栈,步骤如下:.

2021-03-08 14:56:34 252

原创 输出链表中倒数第k个结点

题目描述输入一个链表,输出该链表中倒数第k个结点。时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 256M,其他语言512M解题思路:用两个指针,一个指针先走K步,如果链表长度大于K,则用另外一个指针指向头节点,然后两个指针同时移动,当前面的指针为空时,后面的指针指向的为所求。public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @p.

2021-03-05 17:14:27 176

原创 求一个浮点数的N次幂

题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 64M,其他语言128M最低级的解法:public class Solution { public double Power(double base, int exponent) { if(base==0&&exponent==0).

2021-03-05 16:31:51 627

原创 二进制中1的个数

题目描述输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 64M,其他语言128M方法有很多,可以直接调用内置函数:Integer.bitCount(n) 就可以得到该整数二进制中1的个数。也可以用Integer.toBinaryString(n)将整数转为二进制字符串,然后遍历一次,看看有多少个1.下面不用内置函数实现,而是用移位操作实现。一个二进制数1100,从右边数起第三位是处于最右边的一个1。减..

2021-03-05 14:39:42 230

原创 矩阵覆盖

题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?比如n=3时,2*3的矩形块有3种覆盖方法:时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 64M,其他语言128M解题思路:对于这种规律型的题目,可以先手动算一下当n=1,2,3,4时,有多少种方法,从而找出规律。本题和青蛙跳台阶一样,依然是f(n)=f(n-1)+f(n-2)public class Solution { .

2021-03-05 14:00:47 108

原创 重建二叉树

题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。时间限制:C/C++ 1秒,其他语言2秒解题思路:前序遍历的序列中,第一个数字必然是树的根节点,而该根节点在中序遍历的序列中其左边为左子树,右边为右子树。重建树的过程中,要注意数组的边界。解法1:不使用内置函数public class Solut

2021-03-05 12:40:50 68

原创 寻找查找二叉树的第K小节点

题目描述给定一棵二叉搜索树,请找出其中的第k小的TreeNode结点。时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 64M,其他语言128M解题思路:由于是二叉搜索树(二叉查找树),故中序遍历该树,得到的是有序的。所以在遍历的过程中返回第K个节点就可以了。采用非递归中序遍历:import java.util.Stack;public class Solution { TreeNode KthNode(TreeNode pRoot, int k) {.

2021-03-04 22:16:53 868 1

原创 构建乘积数组

题目描述给定一个数组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]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * ... * A[n-1],B[n-1] = A[0] * A[1] * ... * A[n-2];)对于A长度为1的情况,B无意义,故而无法构建,因此该情况不会存在。时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 64M.

2021-03-04 21:20:16 71 1

原创 不用加减乘除做加法

题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 64M,其他语言128M解题思路:用异或、与、进位操作实现加法public class Solution { public int Add(int num1,int num2) { int sum=num1^num2; int carry=(num1&num2)<<1; num..

2021-03-04 16:04:23 63 1

原创 判断二叉树是否是平衡二叉树

题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 64M,其他语言128M解题思路:在求二叉树高度的过程中,判断一下左右子树的高度差是否大于1.public class Solution { .

2021-03-04 15:19:22 436 1

原创 求二叉树的深度

题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 64M,其他语言128M方法一:层次遍历import java.util.Queue;import java.util.LinkedList;public class Solution { public int TreeDepth(TreeNode root) { .

2021-03-04 14:46:28 126 1

原创 第一个只出现一次的字符位置

题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 64M,其他语言128M解题思路:先遍历一次,用Hashmap记录每个字符的出现次数。然后再遍历一次,找到第一个出现一次的字符import java.util.HashMap;public class Solution { publi.

2021-03-04 14:18:55 71 1

原创 连续子数组的最大和

题目描述输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为 O(n).时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 64M,其他语言128M解题思路:一般遇到求最优解的问题,都使用动态规划。动态规划算法的基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达.

2021-03-04 10:52:14 49 1

原创 数组中出现次数超过一半的数字

题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 64M,其他语言128M解题思路:一个数组中的众数超过数组长度的一半。result记录第一个数,count=1.从前开始遍历,遇到不相等的数,count--,遇到相等的数count++。当count=0时,result.

2021-03-03 23:52:47 62 1

原创 二叉树的镜像

题目描述操作给定的二叉树,将其变换为源二叉树的镜像。比如: 源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++...

2021-03-03 22:02:43 45 1

原创 变态台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 64M,其他语言128M解题思路:当阶梯数为1,2,3,4,5时,可以自己手动算一下有多少种跳法,结果为1,2,4,8,16。故为2的(n-1)次幂public class Solution { public int jumpFloorII(int target) { return su.

2021-03-03 21:30:01 73 1

原创 输出旋转数组的最小元素

题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。时间限制:C/C++ 3秒,其他语言6秒空间限制:C/C++ 64M,其他语言128M思路:从前往后找,找到第一个比array[0]小的数,即为所求。public class Solution { public int minNumberInRotateArray(int [] arr.

2021-03-03 21:17:04 65 1

原创 返回子数组的最大累加和

题目描述给定一个数组arr,返回子数组的最大累加和例如,arr = [1, -2, 3, 5, -2, 6, -1],所有子数组中,[3, 5, -2, 6]可以累加出最大的和12,所以返回12.题目保证没有全为负数的数据[要求]时间复杂度为O(n)O(n),空间复杂度为O(1)O(1)时间限制:C/C++ 2秒,其他语言4秒空间限制:C/C++ 256M,其他语言512M思路:题目很简单。先用sum保存第一个值,然后循环遍历数组,当sum+arr[i]<sum时,则跳过.

2021-03-03 20:59:57 138 1

原创 用两个栈实现队列

题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 64M,其他语言128M一开始的思路:用stack1做push操作。当pop操作时,先将stack2中元素清空,然后将stack1中的数据全部放入stack2中,然后取出stack2栈顶元素,最后把stack2中剩下的元素又放回stack1中,代码如下:public class Solution { Stack<Integ.

2021-03-03 15:48:07 89 2

原创 合并链表

题目描述将两个有序的链表合并为一个新链表,要求新的链表是通过拼接两个链表的节点来生成的,且合并后新链表依然有序。时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 64M,其他语言128Mpublic class Solution { /** * * @param l1 ListNode类 * @param l2 ListNode类 * @return ListNode类 */ public ListNode .

2021-03-03 15:04:49 110 2

原创 返回等于目标值的数

题目描述给出一个整数数组,请在数组中找出两个加起来等于目标值的数,你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足index1 小于index2.。注意:下标是从1开始的假设给出的数组中只存在唯一解例如:给出的数组为 {20, 70, 110, 150},目标值为90输出 index1=1, index2=2时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 64M,其他语言128M解题思路:用两层循环即可,第一层循环确定..

2021-03-03 10:40:08 86

原创 判断二叉树是否对称

题目描述给定一棵二叉树,判断琪是否是自身的镜像(即:是否对称)例如:下面这棵二叉树是对称的 1 / \ 2 2/ \ / \3 4 4 3下面这棵二叉树不对称。 1 / \ 2 2 \ \ 3 3时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 64M,其他语言128M解题思路:由于要求树有对称性,也就是以根节点为中心,两边对称,所以比较的是同一根节点的左右子树是否相同。即左子树的...

2021-03-02 22:57:13 339

原创 反转链表

题目描述输入一个链表,反转链表后,输出新链表的表头。时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 64M,其他语言128M从前往后遍历,将每一个结点采用倒插法建立新链表就可以了。public class Solution { public ListNode ReverseList(ListNode head) { if(head==null){ return null; } else{ ListN.

2021-03-02 20:33:31 50

原创 判断给定的链表中是否有环

题目描述判断给定的链表中是否有环。如果有环则返回true,否则返回false。你能给出空间复杂度O(1)的解法么?时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M解题思路:用两个指针指向头节点,遍历的时候,一个指针一次走两步,另外一个指针一次走一步。如果没有环,两指针不会相遇,否则会相遇。该问题比较简单,但难点在于怎样把时间控制在2秒内。多一个判断句,就会超出时间限制。所以要尽量减少判断语句,同时满足所有测试用例。public class So.

2021-03-02 15:55:33 180

原创 字节跳动2019春招研发机试题  万万没想到之抓捕孔连顺

字节跳动2019春招研发机试题万万没想到之抓捕孔连顺我叫王大锤,是一名特工。我刚刚接到任务:在字节跳动大街进行埋伏,抓捕恐怖分子孔连顺。和我一起行动的还有另外两名特工,我提议。。。。这其实是一道数学题。首先要求两个特工不能在一起,且特工等价,也就是说在n个符合距离条件的位置中,选出给2两个位置给A、B后,剩下的只能是给C,数量为注意,不是从n个中选3个,因为选三个的话就表示特工不等价了。其次是因为坐标是从小到大排序的,所以,只要在一定的坐标范围内(最大坐标-最小坐标)<D,那么..

2021-03-01 23:20:49 306

原创 字节跳动2019春招研发机试题  万万没想到之聪明的编辑

字节跳动2019春招研发机试题万万没想到之聪明的编辑我叫王大锤,是一家出版社的编辑。我负责校对投稿来的英文稿件,这份工作非常烦人,因为每天都要去修正无数的拼写错误。但是,优秀的人总能在平凡的工作中发现真理。我发现一个发现拼写错误的捷径:​​​​​​​。。。。。//核心思想:从第三个字母开始遍历。每次遍历都检查是否满足AAA或AABB型,如果满足就删除当前字母,然后从下一个字母继续上述操作import java.util.ArrayList;import java.util.List;i..

2021-03-01 21:17:04 157

原创 ModuleNotFoundError: No module named ‘matplotlib‘问题

Anaconda、VScode环境安装matplotlib之后,仍然遇到:ModuleNotFoundError: No module named ‘matplotlib‘问题对于这个问题,想必各位都像下面这样把:但是这样安装完之后一般还是会遇到ModuleNotFoundError: No module named ‘matplotlib‘问题这个问题真的搞了很久,网上找了很多办法都试了一遍,才解决的,现在记录一下,避免以后踩坑。方法一:用命令安装matplotlib打开.

2021-02-08 11:51:54 15333 12

原创 tensorflow2.0错误:AttributeError: module ‘tensorflow’ has no attribute ‘Session’解决办法

tensorflow2.0错误:AttributeError: module ‘tensorflow’ has no attribute ‘Session’解决办法这是由于tensorflow2.0不支持1.X版本的session导致的。解决办法如下:#代码前两行加入下面两行代码就可以解决所有烦恼了。import tensorflow.compat.v1 as tf tf.disable_eager_execution()加入上面两行代码之后,就可以像tensorflow 1.X版.

2021-02-08 10:37:06 2008 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除