罗昌凯
码龄7年
关注
提问 私信
  • 博客:27,276
    动态:22
    27,298
    总访问量
  • 31
    原创
  • 1,363,447
    排名
  • 3
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:中国
  • 加入CSDN时间: 2018-03-18
博客简介:

罗凯的博客

查看详细资料
个人成就
  • 获得39次点赞
  • 内容获得30次评论
  • 获得76次收藏
  • 代码片获得176次分享
创作历程
  • 31篇
    2021年
成就勋章
TA的专栏
  • 找工作过程的学习笔记
  • 剑指offer中等题
    8篇
  • 牛客网JAVA简单编程题
    18篇
  • CV
    2篇
  • 字节跳动JAVA工程师笔试题
    2篇
  • 牛客网试题
兴趣领域 设置
  • 大数据
    mysqlredis
  • 后端
    spring架构
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

183人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

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

1、PriorityQueue默认情况下建立的是最小堆,堆顶元素是最小值。如果输出这个堆,得到的序列是递增的。2、可以自定义比较器,使得PriorityQueue建立最大堆,堆顶元素是最大值,如果输出这个堆,得到的序列是递减的。首先看一下PriorityQueue在默认的情况下是如何使用的:import java.util.PriorityQueue; public class Test9 { public static void main(String[] args) { int
原创
发布博客 2021.03.10 ·
1346 阅读 ·
2 点赞 ·
0 评论 ·
6 收藏

找出最小的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 ·
320 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

二叉搜索树改为双向链表

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

栈的压入、弹出序列

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列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 ·
298 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

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

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

求一个浮点数的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 ·
719 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

二进制中1的个数

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

矩阵覆盖

题目描述我们可以用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 ·
134 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

重建二叉树

题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{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 ·
91 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

寻找查找二叉树的第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 ·
933 阅读 ·
1 点赞 ·
1 评论 ·
0 收藏

构建乘积数组

题目描述给定一个数组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 ·
100 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

不用加减乘除做加法

题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。时间限制: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 ·
85 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

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

题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 64M,其他语言128M解题思路:在求二叉树高度的过程中,判断一下左右子树的高度差是否大于1.public class Solution { .
原创
发布博客 2021.03.04 ·
469 阅读 ·
0 点赞 ·
1 评论 ·
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 ·
145 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

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

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

连续子数组的最大和

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

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

题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为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 ·
81 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

二叉树的镜像

题目描述操作给定的二叉树,将其变换为源二叉树的镜像。比如: 源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++...
原创
发布博客 2021.03.03 ·
68 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

变态台阶

题目描述一只青蛙一次可以跳上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 ·
100 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

输出旋转数组的最小元素

题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。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 ·
96 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏
加载更多