2021刷题-Java
文章平均质量分 55
renxingzhadan
这个作者很懒,什么都没留下…
展开
-
Java IO流学习总结(一)—— IO流分类和常用IO流汇总
https://blog.csdn.net/qq_37969433/article/details/79886751转载 2022-08-28 16:32:18 · 703 阅读 · 0 评论 -
Java 字符串常见的操作
在Java当中,为字符串类提供了丰富的操作方法,对于字符串,我们常见的操作就是:字符串的比较、查找、替换、拆分、截取以及其他的一些操作。转载 2022-06-28 21:07:46 · 426 阅读 · 0 评论 -
BM83 字符串变形
字符串变形原创 2022-06-27 00:25:54 · 193 阅读 · 0 评论 -
BM47 寻找第K大
排序原创 2022-06-26 20:21:41 · 140 阅读 · 0 评论 -
Java动态代理
https://blog.csdn.net/weixin_45476233/article/details/120450492转载 2022-06-22 19:23:57 · 1386 阅读 · 0 评论 -
Java之Class.forName()用法案例详解
这篇文章主要介绍了Java之Class.forName()用法案例详解转载 2022-06-22 17:15:32 · 2604 阅读 · 0 评论 -
Jsp+Servlet+JavaBean到EJB,再到Spring,最后到SpringBoot
Web发展Spring发明史转载 2022-06-22 16:37:51 · 429 阅读 · 0 评论 -
Java在远程方法调用中运用反射机制
本案例将介绍反射机制在网络编程中的应用,实现如何在客户端通过远程方法调用服务器端的方法。转载 2022-06-21 18:59:07 · 108 阅读 · 0 评论 -
NC45 实现二叉树先序,中序和后序遍历
分析:递归实现,每次递归添加当前节点。import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */public class Solution { /** * * @param root TreeNode类 the root of binary tree...原创 2021-10-23 20:45:49 · 76 阅读 · 0 评论 -
NC19 连续子数组的最大和——动态规划
分析:连续子数列和,关键是连续,当前最大值dp[n]与前一个最大值dp[n-1]的关系是:当dp[n-1]>0时,dp[n] = dp[n-1] + arr[n];当dp[n-1]<0时,dp[n] = arr[n];用变量max记录之前的最大值dp[n]。public class Solution { public int FindGreatestSumOfSubArray(int[] array) { int max = array...原创 2021-10-12 17:17:42 · 256 阅读 · 0 评论 -
NC15 求二叉树的层序遍历——递归全局变量
描述给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)例如:给定的二叉树是{3,9,20,#,#,15,7},该二叉树层序遍历的结果是[[3],[9,20],[15,7]]提示:0 <= 二叉树的结点数 <=1500分析:1. 全局变量2. 递归遍历3. 记录层数import java.util.*;/* * public class TreeNode { * int val = 0; * .原创 2021-10-11 17:00:40 · 138 阅读 · 0 评论 -
NC96 判断一个链表是否为回文结构
分析:1、反转链表,然后对比,空间复杂度O(n),时间复杂度O(n)2、将链表数据存到数组里,时间复杂度空间复杂度都是O(n)3、存到栈里4、每次对比从前到后找到指定位置,时间复杂度O(n^2),空间复杂度O(1)——超时2.import java.util.*;/* * public class ListNode { * int val; * ListNode next = null; * } */public class Solut...原创 2021-09-26 17:03:57 · 86 阅读 · 0 评论 -
NC55 最长公共前缀
解法1:对字符串数组进行排序,然后只要比较首尾两个字符串即可解法2:横向扫描基于该结论,可以得到一种查找字符串数组中的最长公共前缀的简单方法。依次遍历字符串数组中的每个字符串,对于每个遍历到的字符串,更新最长公共前缀,当遍历完所有的字符串以后,即可得到字符串数组中的最长公共前缀:如果在尚未遍历完所有的字符串时,最长公共前缀已经是空串,则最长公共前缀一定是空串,因此不需要继续遍历剩下的字符串,直接返回空串即可。解法3:垂直扫描法:按列扫描,先验证所有字符串的第一个元素...转载 2021-09-18 00:00:38 · 181 阅读 · 0 评论 -
NC61 两数之和
分析:使用map储存数组值和坐标,然后再扫一遍数组寻找target - number[i]的差值是否在map中,注意同一个数不能加两遍。代码:import java.util.*;public class Solution { /** * * @param numbers int整型一维数组 * @param target int整型 * @return int整型一维数组 */ public int...原创 2021-09-17 22:37:40 · 78 阅读 · 0 评论 -
NC53 删除链表的倒数第n个节点
描述给定一个链表,删除链表的倒数第 nn 个节点并返回链表的头指针例如,给出的链表为: 1\to 2\to 3\to 4\to 51→2→3→4→5, n= 2n=2.删除了链表的倒数第 nn 个节点之后,链表变为1\to 2\to 3\to 51→2→3→5.备注:题目保证 nn 一定是有效的请给出时间复杂度为\ O(n) O(n) 的算法示例1输入:{1,2},2 返回值:{2}分析:双指针,快的指向结尾,慢的指向指定位置前一个,二者相差n。删除指定节点,注意判...原创 2021-09-17 15:45:46 · 68 阅读 · 0 评论 -
NC3 链表中环的入口结点
描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。输入描述:输入分为2段,第一段是入环前的链表部分,第二段是链表环的部分,后台将这2个会组装成一个有环或者无环单链表返回值描述:返回链表的环的入口结点即可。而我们后台程序会打印这个节点import java.util.HashMap;/* public class ListNode { int val; ListNode next = null; ListNode(int原创 2021-09-08 16:30:41 · 207 阅读 · 0 评论 -
NC1 大数加法
描述以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。(字符串长度不大于100000,保证字符串仅由'0'~'9'这10种字符组成)示例1输入:"1","99"返回值:"100"说明:1+99=100分析:1、先设置结果字符数组长度,两数中最大的位数加12、然后按位加,保留和,取整得当前位结果,放到结果数组中;取余得进位。3、将进位放到最高位。4、判断结果数组最高位是否为0,为0则不返回首位。import java.util.*;原创 2021-09-08 15:58:22 · 177 阅读 · 0 评论 -
Java反射常见面试题
1. 什么是反射?反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语言的反射机制。2. 哪里用到反射机制?JDBC中,利用反射动态加载了数据库驱动程序。 Web服务器中利用反射调用了Sevlet的服务方法。 Eclispe等开发工具利用反射动态刨析对象的类型与结构,动态提示对象的属性和方法。 很多框架都用到反射机制,注入属性,调用方...转载 2021-08-05 16:01:57 · 285 阅读 · 0 评论 -
Java 反射详解
1、什么是反射? Java反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。而这也是Java被视为动态(或准动态,为啥要说是准动态,因为一般而言的动态语言定义是程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言。从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言。)语言的一个关键性质。2、反射能做什么? 我们知道反...转载 2021-08-05 15:47:39 · 74 阅读 · 0 评论 -
NC40 两个链表生成相加链表
描述假设链表中每一个节点的值都在 0 - 9之间,那么链表整体就可以代表一个整数。给定两个这种链表,请生成代表两个整数相加值的结果链表。例如:链表 1为 9->3->7,链表 2为 6->3,最后生成新的结果链表为 1->0->0->0。示例1输入:[9,3,7],[6,3]返回值:{1,0,0,0}备注:分析:反转链表再相加。import java.util.*;/* * public class L...原创 2021-07-16 18:44:14 · 132 阅读 · 0 评论 -
NC23 划分链表
描述给出一个链表和一个值,以为参照将链表划分成两部分,使所有小于的节点都位于大于或等于的节点之前。两个部分之内的节点之间要保持的原始相对顺序。例如:给出返回示例1输入:{1,4,3,2,5,2},3返回值:{1,2,2,4,3,5}public class Solution { /** * * @param head ListNode类 * @param x int整型 * @retu...原创 2021-07-13 23:53:14 · 178 阅读 · 0 评论 -
Java 的强引用、弱引用、软引用、虚引用
1、强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下:Object o=new Object(); // 强引用 当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。如果不使用时,要通过如下方式来弱化引用,如下:o=null; // 帮助垃圾收集器回收此对象 显式地设...转载 2021-07-09 22:43:32 · 98 阅读 · 0 评论 -
ArrayList和LinkedList的对比
现在网上大部分都说,ArrayList查询速度快,LinkedList增删速度快。其实这种说法是错误的。ArrayList底层是数组,在每次进行添加的时候实际上是在数组后面进行追加,在调用扩容机制grow,数组复制的时候,用到的语句底层是用C语言进行书写的,所以对效率的影响可以忽略不计(C语言执行效率较高)。而LinkedList在添加的时候是在创建对象。ArrayList在查询的时候,实际上就是根据数组下标来获取值,而LinkedList是前后迭代式获取值,故ArrayList的查询速度是优于Link转载 2021-07-05 23:02:26 · 202 阅读 · 0 评论 -
NC91 最长递增子序列——动态规划+二分
算法参考:最长递增子序列_牛客博客 (nowcoder.net)https://blog.nowcoder.net/n/78d57989c2104ebe823368cc1301113f?f=comment两步走:第一步——求最长递增子序列长度 第二步——求字典序靠前的子序列对于第一步,有两种解法:动态规划,时间复杂度为O(n^2),会超时 贪心+二分,时间复杂度为O(nlogn)下面说说贪心+二分的解法,举例说明基本思路,假设数组arr为[2, 3, 1, 2, 3],vec数.原创 2021-07-05 11:26:37 · 402 阅读 · 0 评论 -
NC17 最长回文子串——动态规划
描述对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。给定字符串A以及它的长度n,请返回最长回文子串的长度。示例1输入:"abc1234321ab",12返回值:7分析:dp[i][j]表示以A[i]为开头A[j]结尾的回文子串长度,如果不是回文,值为0i == j显然有dp[i][j] = 1 其他情况有如下事实:长度大于2的回文串,去掉首尾后还是回文串 所以判断一个串是否是回文,除了要看首尾是否相同,还要看去掉首尾后的子串是否回文,这就是状态从原创 2021-07-03 16:40:59 · 301 阅读 · 0 评论 -
Java中char和String的相互转换
转自:http://blog.csdn.net/yaokai_assultmaster/article/details/52082763Java中char是一个基本类型,而String是一个引用类型。有时候我们需要在它们之间互相转换。String转换为char在Java中将String转换为char是非常简单的。1. 使用String.charAt(index)(返回值为char)可以得到String中某一指定位置的char。2. 使用String.toCharArray()(返回值为c转载 2021-07-02 22:59:33 · 1424 阅读 · 0 评论 -
NC103 反转字符串
描述写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)示例1输入:"abcd"返回值:"dcba"分析:两个指针,可以在原数组上进行交换,也可以定义临时数组进行交换。代码:(临时数组) public String solve (String str) { // write code here int len = str.length(); char[] tmp = new c.原创 2021-07-02 22:58:12 · 79 阅读 · 0 评论 -
六大算法之三:动态规划
已知问题规模为n的前提A,求解一个未知解B。(我们用An表示“问题规模为n的已知条件”)此时,如果把问题规模降到0,即已知A0,可以得到A0->B.如果从A0添加一个元素,得到A1的变化过程。即A0->A1; 进而有A1->A2; A2->A3; …… ; Ai->Ai+1. 这就是严格的归纳推理,也就是我们经常使用的数学归纳法; 对于Ai+1,只需要它的上一个状态Ai即可完成整个推理过程(而不需要更前序的状态)。我们将这一模型称为马尔科夫模型。对应的推理过程叫做“贪转载 2021-07-02 22:17:08 · 404 阅读 · 0 评论 -
NC19 子数组的最大累加和问题
描述给定一个数组arr,返回子数组的最大累加和例如,arr = [1, -2, 3, 5, -2, 6, -1],所有子数组中,[3, 5, -2, 6]可以累加出最大的和12,所以返回12.题目保证没有全为负数的数据[要求]时间复杂度为O(n)O(n),空间复杂度为O(1)O(1)示例1输入:[1, -2, 3, 5, -2, 6, -1]返回值:12备注:分析:创建一个数组a,长度为原数组长度,不同位置数字a[i]代表0...i上最大连续子序列和,a[0]=.原创 2021-07-02 19:07:57 · 104 阅读 · 0 评论 -
NC22 合并两个有序的数组
描述给出一个整数数组A和有序的整数数组B,请将数组A合并到数组B中,变成一个有序的升序数组注意:1.可以假设A数组有足够的空间存放B数组的元素,A和B中初始的元素数目分别为m和n,A的数组空间大小为 m+n2.不要返回合并的数组,返回是空的,将数组B的数据合并到A里面就好了3.A数组在[0,m-1]的范围也是有序的例1:A:[1,2,3,0,0,0],m=3B: [2,5,6],n=3合并过后A为:A: [1,2,2,3,5,6]分析:因为限制空间复杂度,要.原创 2021-07-02 00:16:36 · 160 阅读 · 0 评论 -
NC119 最小的K个数——堆排、快排变体
描述给定一个数组,找出其中最小的K个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。如果K>数组的长度,那么返回一个空的数组示例1输入:[4,5,1,6,2,7,3,8],4返回值:[1,2,3,4]分析:先使用快速排序法进行排序,再取前k个数。代码:import java.util.ArrayList;public class Solution { @SuppressWarnings("unchecked原创 2021-07-01 22:47:05 · 95 阅读 · 0 评论 -
NC41 最长无重复子数组——两个指针
描述给定一个数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同。子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组示例1输入:[2,3,4,5]返回值:4说明:[2,3,4,5]是最长子数组示例2输入:[2,2,3,4,3]返回值:3说明:[2,3,4]是最长子数组示例3输入:[9]复制返回值:1示例4输入:[1,2,3,1,2,3,2,2]返回值:3原创 2021-07-01 20:29:10 · 91 阅读 · 0 评论 -
NC68 跳台阶——动态规划
描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。示例输入:2返回值:2示例2输入:7返回值:21分析:每次有1步和2步两种方法,可以递归实现,用返回值记录完成方法的数目。注意边界划分。用动态规划从下往上,用循环得到答案。题目解析这是一道经典的递推题目,你可以想如果青蛙当前在第n级台阶上,那它上一步是在哪里呢?显然,由于它可以跳1级台阶或者2级台阶,所以它上一步必定在第n-1,或者第n原创 2021-07-01 16:47:41 · 178 阅读 · 0 评论 -
NC76 用两个栈实现队列
描述用两个栈来实现一个队列,分别完成在队列尾部插入整数(push)和在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。示例:输入:["PSH1","PSH2","POP","POP"]返回:1,2解析:"PSH1":代表将1插入队列尾部"PSH2":代表将2插入队列尾部"POP“:代表删除一个元素,先进先出=>返回1"POP“:代表删除一个元素,先进先出=>返回2示例1输入:["PSH1原创 2021-07-01 00:37:41 · 63 阅读 · 0 评论 -
NC105 二分查找-II
描述请实现有重复数字的升序数组的二分查找给定一个 元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的第一个出现的target,如果目标值存在返回下标,否则返回 -1示例1输入:[1,2,4,4,5],4返回值:2说明:从左到右,查找到第1个为4的,下标为2,返回2示例2输入:[1,2,4,4,5],3返回值:-1示例3输入:[1,1,1,1,1],1返回值:0分析有序递增数组,二分查找,递归实现(自顶向.原创 2021-07-01 00:30:53 · 74 阅读 · 0 评论 -
Java 栈 stack方法总结
前言最近开始在重新刷leetcode,发现之前刷过的很多算法题现在又陆陆续续忘记了。真是应了那句话,面试造火箭,进去拧螺丝。刷了几道在贪心算法中使用stack来完成的。就重新总结下栈Stack的方法。Stack和Collection的关系Stack来自于Vector,那么显然stack的底层实现是数组。Stack的方法1. java中Stack只有一个无参构造函数。2. 属于stack自己的方法包括push( num) //入栈 pop() //栈顶元素出栈 empty() /转载 2021-06-30 23:17:47 · 13057 阅读 · 1 评论 -
NC4 判断链表中是否有环——快慢指针
描述判断给定的链表中是否有环。如果有环则返回true,否则返回false。你能给出空间O(1)复杂度的解法么?输入分为2部分,第一部分为链表,第二部分代表是否有环,然后回组成head头结点传入到函数里面。-1代表无环,其他的数字代表有环,这些参数解释仅仅是为了方便读者自测调试示例1输入:{3,2,0,-4},1返回值:true说明:第一部分{3,2,0,-4}代表一个链表,第二部分的1表示,-4到位置1,即-4->2存在一个链接,组成传入的head为一个带环的链.原创 2021-06-30 22:07:37 · 215 阅读 · 2 评论 -
设计LRU缓存结构(Java实现)
(1)是什么?Least Recently Used (最近最少使用)缓存淘汰算法中的一种。因为缓存是保存在内存中的,内存是很吃紧很宝贵的,所以要保证最热点的数据做缓存,冷门数据淘汰。(2)具体在哪些场景使用?Mysql的缓冲池,Linux OS 的虚拟文件系统VFS都有用到。(3)具体实现步骤?既然是缓存,那肯定就是List中存放着一大串 Key - Value 结构,我们查找目标数据的时候就是for这个List找到对应的Key,这个List可能很长,所以我们可以把热点数据排到较前面,冷门转载 2021-06-28 23:15:30 · 384 阅读 · 0 评论 -
【ArrayList嵌套HashMap】
package com.yjf.esupplier.common.test;import java.util.ArrayList;import java.util.HashMap;import java.util.Set;/** * @author shusheng * @description ArrayList嵌套HashMap * @Email shusheng@yiji.com * @date 2018/12/18 15:22 */public class ArrayLi.转载 2021-06-28 23:10:47 · 115 阅读 · 0 评论 -
NC93 设计LRU缓存结构
描述设计LRU缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能set(key, value):将记录(key, value)插入该结构 get(key):返回key对应的value值[要求]set和get方法的时间复杂度为O(1) 某个key的set或get操作一旦发生,认为这个key的记录成了最常使用的。 当缓存的大小超过K时,移除最不经常使用的记录,即set或get最久远的。若opt=1,接下来两个整数x, y,表示set(x, y)若opt=2,接下来一个整数x原创 2021-06-28 23:00:20 · 75 阅读 · 0 评论