自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置

题目描述:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。输入: [1,3,5,6], 5。输入: [1,3,5,6], 0。你可以假设数组中无重复元素。

2022-09-12 15:54:12 641 2

原创 剑指:二叉树有关题目

题目链接:JZ7 重建二叉树题目描述:给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。前提条件:pre 和 vin 均无重复元素vin出现的元素均出现在 pre里只需要返回根结点,系统会自动输出整颗树做答案对比要求:空间复杂度 O(n),时间复杂度 O(n)题目分析:已知前序遍历和中序遍历可以唯一确定一棵二叉树,前序遍历可以首先确定

2022-09-04 13:01:57 398

原创 笔试题:给定一个数组和一个目标值,找出数组中和为目标值的两个数

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。网龙java开发8.21笔试: ACM 输入输出太麻烦了!示例:给定nums = [2,7,11,15], target = 9。因为nums[0] + nums[1] = 2 + 7 = 9。所以返回 [0,1]

2022-08-21 21:26:50 1333

原创 将数组转换为“长城”数组 最少需要几次操作

嘤嘤觉得长城很美,特别是它的锯齿,非常优雅,现在有一个数组,想把这个数组变为“长城”,即对于“长城”中的每一个元素左右两边的元素相等,并且与它不相等。例如{2,1,2,1,2}是长城,{2,1,3,4,5}不是长城;每次可以将一个元素加1,请问最少需要多少次?输出:一个整数 表示最少的操作次数。输入:数组长度+数组每一个元素。

2022-08-20 16:51:01 2630

原创 DocSearcher:文档搜索引擎

DocSearcher:输入一个查询词,得到若干个搜索结果,每个搜索结果包含了标题,描述,展示URL,可点击标题跳转。

2022-08-14 16:55:25 1442

原创 JZ73:翻转单词序列

题目链接: JZ73 翻转单词序列题目描述:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如, “nowcoder. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a nowcoder.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?数据范围:1 ≤\le≤ n ≤\le≤ 100进阶:空间复杂度 O(n) ,时间复杂度 O

2022-06-05 12:13:37 250

原创 JZ77:按之字形顺序打印二叉树

题目链接:JZ77 按之字形顺序打印二叉树题目描述:给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)数据范围:0 ≤\le≤ n ≤\le≤ 1500,树上每个节点的val满足∣val∣<=1500要求:空间复杂度:O(n),时间复杂度:O(n)题目分析:层次遍历+记录层数,利用双端队列层次遍历的基础上,记录层数layer,如果为奇数层,则从左到右打印,偶数层,则从右向左打印。时间复杂度为O(n),空间复杂度也为O(n)import java.u

2022-05-29 16:27:07 310

原创 JZ55:二叉树的深度

题目链接:JZ55 二叉树的深度题目描述:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度,根节点的深度视为 1 。数据范围:节点的数量满足 0 ≤\le≤ n ≤\le≤ 100 ,节点上的值满足 0 ≤\le≤ val ≤\le≤ 100进阶:空间复杂度 O(1),时间复杂度 O(n)题目分析:①递归调用:深度即高度,二叉树的递归,就是将某个结点的左右子树分别看成二叉树求高度,这样就将原问题化为子问题,递归调用原函数。时间

2022-05-23 11:28:16 191

原创 JZ18:删除链表的节点

题目链接:JZ18 删除链表的节点题目描述:给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。数据范围:0<=链表节点值<=100000<=链表长度<=10000题目分析:①记录待删除节点的上一个节点,删除当前节点,并将上一个节点指向当前节点的下一个节点。这种方法比较容易想,一次循环就好了。时间复杂度O(n)空间复杂度O(1)public class Solution { public ListNode delet

2022-05-20 11:47:38 540

原创 JZ76:删除链表中重复的结点

题目链接:JZ76 删除链表中重复的结点题目描述:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。例如,链表 1->2->3->3->4->4->5 处理后为 1->2->5数据范围:链表长度满足 0 ≤\le≤ nnn ≤\le≤ 1000 ,链表中的值满足 1 ≤\le≤ valvalval ≤\le≤ 1000进阶:空间复杂度 O(n)O(n)O(n) ,时间复杂度 O(n)O(n)O(n)

2022-05-20 10:48:06 205

原创 JZ35:复杂链表的复制

题目链接:JZ35: 复杂链表的复制题目描述:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)。 下图是一个含有5个结点的复杂链表。图中实线箭头表示next指针,虚线箭头表示random指针。为简单起见,指向null的指针没有画出。深拷贝和浅拷贝的区别 参考链接数据类型分为基本数据类型和引用数据类型,基本数据类型的数

2022-05-18 15:17:14 194

原创 JZ22:链表中倒数最后k个结点

题目链接:JZ22:链表中倒数最后k个结点题目描述:输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。如果该链表长度小于k,请返回一个长度为 0 的链表。要求:空间复杂度 O(n)O(n)O(n),时间复杂度 O(n)O(n)O(n)进阶:空间复杂度 O(1)O(1)O(1),时间复杂度 O(n)O(n)O(n)题目分析:① 得到链表的长度;根据len和k的大小关系,移动pHead指针。注意返回null条件:链表长度为0,k为0,k大于链表长度空间复杂度 O

2022-05-16 22:08:50 109

原创 JZ23: 链表中环的入口结点

题目链接:JZ23 链表中环的入口结点题目描述:给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。数据范围: n ≤\le≤ 10000,1≤\le≤结点值 ≤\le≤ 10000要求:空间复杂度 O(1)O(1)O(1),时间复杂度 O(n)O(n)O(n)题目分析:①快慢指针法:两个指针,fast每次走两步,slow每次走一步,如果链表有环一定能相遇,否则遍历结束。通过计算得出,相遇结点顺时针走到环入口结点的距离 和 头结点到环入口结点的距离是相等的。所以我们找

2022-05-15 18:20:36 218

原创 JZ52:两个链表的第一个公共结点

题目链接:JZ52:两个链表的第一个公共结点题目描述:输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空。数据范围: n ≤\le≤ 1000要求:空间复杂度 O(1)O(1)O(1),时间复杂度 O(n)O(n)O(n)题目分析:① 根据两个链表的长度差,让链表长的一方先走双方的差值步,之后再一起走!两个结点相同,即为两个链表的第一个公共结点。时间复杂度O(m+n) 需要遍历两个链表空间复杂度O(1) 没有借助额外的内存空间import java.util.*;

2022-05-14 18:14:39 377

原创 JZ25:合并两个排序的链表

题目链接:题目描述:题目分析:总结

2022-05-14 11:03:34 134

原创 剑指24:反转链表

题目链接:JZ24:反转链表题目描述:给定一个单链表的头结点head(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。数据范围: 0≤n≤100000\leq n\leq100000≤n≤10000要求:空间复杂度 O(1)O(1)O(1) ,时间复杂度 O(n)O(n)O(n) 。解题思路:①借助傀儡结点newHead,记录链表的头结点,增加一个headNext保存head的后一个结点。/*public class ListNode {

2022-05-13 16:36:04 138

原创 剑指6:从尾到头打印链表

题目链接:JZ6:从尾到头打印链表题目描述:输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。解题思路:☆注意 题目表达的意思是从这个头结点开始就存储数据的!① 使用栈;利用栈先进后出的原则,先将链表中的值逐一取出放至栈中。最后在pop()输出到数组中返回。如果没有输出限制的话,我们也可以使用Collections.reserve()进行链表反转 public class ListNode { int val; ListNode next = null

2022-05-11 17:45:52 107

原创 【多线程系列】单例模式

单例模式是校招中最常考的设计模式之一。啥是设计模式?

2022-04-18 10:28:42 531 1

原创 【多线程系列】Synchronized 和 Volatile关键字

文章目录一、了解Synchronized关键字嘛?简单说说~二、Volatile关键字呢?它们两者有何区别?三、wait()和notify()方法介绍一下?具体如何使用?四、wait()和sleep()方法对比?如有错误,请批评指正!一、了解Synchronized关键字嘛?简单说说~Synchronized关键字,表示对当前的普通方法/静态方法/代码块进行加锁,当代码运行至该方法时,要检查有没有其他线程正在用这个方法,有的话要等别d的线程用完之后再锁定调用,接着执行代码。synchronized有三个

2022-04-17 17:06:42 510

原创 【多线程系列】线程的创建

进程和线程的区别,能否举例说明?线程的创建方式有几种?Java中 Thread类及其常见方法你了解哪些?run()和start()的区别?join()和sleep()的区别?你能说一下线程的状态都有哪些?分别表示什么意义多线程可能会带来哪些风险?...

2022-04-11 19:24:28 644

原创 剑指4:二维数组中的查找

JZ4 二维数组中的查找

2022-04-06 18:12:36 218

原创 HashMap原理和实现

Map和Set使用场景:课程主要讲的是HashMap和HashSet

2022-04-05 22:56:55 940

原创 哈希表有关题目

文章目录只出现一次的数字复制带随机指针的链表宝石与石头坏键盘打字前K个高频单词只出现一次的数字链接:LeetCode136:只出现一次的数字题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。思路:① 去重:我们可以用HashSet把成对的元素去掉,留下的就是只出现一次的元素了,时间复杂度O(n)② 位运算:只要是不占用额外空间来实现,就往位运算上考虑。异或操作,相同为1,不同为0代码://方法一:去重class Solution {

2022-04-02 10:24:41 1738

原创 TCP/IP四层模型重点协议解析

应用层协议DNS协议NAT协议NAPT协议传输层协议TCP协议[工作机制详解]UDP协议网络层协议IP协议数据链路层协议以太网

2022-03-25 17:03:39 5853 1

原创 TCP协议工作机制详解

TCP协议确认应答超时重传连接管理滑动窗口流量控制拥塞控制延迟应答捎带应答粘包问题异常情况

2022-03-24 16:52:38 4346

原创 网络基本知识【数据传输流程】

一、网络基础这篇博客主要复习网络编程的理论基础,希望自己能够理解最基本的东西。1. IP地址IP地址主要用于标识网络通信过程中不同主机的逻辑地址,以此来屏蔽物理地址的差异。32位二进制数,通常以‘点分十进制’的形式表示。目前,IP地址有两种形式:IPv4和IPv6;可惜的是,这两种形式是不兼容的。IPv4的数量是2的32次方,大约43亿左右,如果每个主机都有一个IP地址,现在看来是远远不够的,后来推出IPv6(长度128位),IP升级意味着要耗费大量的人力物力财力,牵扯到相关设备的升级,所以IPv6

2022-03-22 16:56:54 10443 2

原创 Java Socket通信之TCP协议

java流套接字通信模型TCP流套接字编程两个例子(回显服务器/查字典服务器)TCP中的长短连接短连接长连接协议为什么需要协议?封装/分用 VS 序列化/反序列化自定义协议

2022-03-19 18:00:02 4406

原创 Java Socket通信之UDP协议

什么是网络编程?Socket套接字流套接字数据报套接字面试题:TCP协议和UDP协议的区别?java数据报套接字通讯模型(Socket UDP以及常见的API)UDP数据报套接字编程回显服务器查字典服务器

2022-03-18 17:14:44 4791 4

原创 CSS基本知识总结

CSS是什么?基本语法规范引入方式1.内部样式表2.行内样式表3.外部样式代码风格注意事项选择器种类1.基础选择器标签选择器类选择器id 选择器通配符选择器2.复合选择器后代选择器子选择器并集选择器伪类选择器...

2022-03-16 10:17:30 191

原创 java异常处理

文章目录什么是异常?Java异常体系如何处理异常?抛出异常捕获异常关于finally的注意事项一般的异常处理流程自定义异常类什么是异常?平时在写代码的过程中,会出现很多异常信息,如ArithmeticException、ArrayIndexOutOfBoundsException、NullPointerException…,所谓异常指的是程序在运行时出现错误通知调用者的一种机制。注意关键字,运行时!字母拼写错误、语法报错都是属于编译时期的错误,运行时指的是已经生成.class文件了,再由JVM执行过程中

2022-03-12 11:33:47 709

原创 HTML基本知识总结

碎语在了解HTML之前,常接触的java语言主要用于后端服务器的开发。刚开始学的时候,老是听别人说HTML+CSS+JavaScript前端三大件,于是就了解了解。在前端开发领域中,还有个web assembly 中间语言,可以把其他的各种高级语言都编译转化成这种中间语言,方便开发,是挺神奇的。目前主流的开发前端网页方案,主要是HTML(骨),CSS(皮),JavaScript(魂)。但是还有其他的一些前端语言出现,如:①微软:TypeScript(国内很多企业都有应用)②谷歌:Dart + Flu

2022-03-11 16:13:31 358

原创 初始网络基础(OSI七层模型&&TCP/IP模型)

目录一、熟练掌握内容1. OSI七层模型2. TCP/IP五层(或四层)模型3. 封装和分用二、其他知识补充1. 网络互连2. 网络划分3. 网络通讯基础a. IP地址b. 端口号c. 协议一、熟练掌握内容1. OSI七层模型OSI(open system interconnection,开放系统互联)从逻辑上对网络进行定义和规范,将网络分为7层,最主要的功能就是针对不同类型的主机实现数据传输。(ps:仅存在于教科书上)优点:将服务、接口和协议这三个概念明确区分开来,理论完整,使不同的网络之间实现

2022-03-10 17:37:23 2306

原创 数据库基本操作(进阶)

一、数据库约束约束类型:NOT NULL:指示某列不能存储NULL值(必填项)UNIQUE:保证某列的每行必须有唯一的值(不能与其它记录重复)DEFAULT: 规定没有给列赋值时的默认值PRIMARY KEY : NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。(一条记录的唯一身份标识)FOREIGN KEY : 保证一个表中的数据匹配另一个表中的值的参照完整性。(两张表之间的关联关系)CHECK :保证列中

2021-09-22 10:18:28 385

原创 MySQL数据库基本操作

一、数据库基本知识1.数据结构和数据库的区别数据结构是研究数据在内存中是如何存储的,而数据库是研究数据在磁盘上是如何组织的。2.数据库系统的特点①数据结构化②数据共享性高、冗余度低、易扩充③数据独立性高④数据由DBMS统一管理和控制二、数据库分类数据库大体分为两类:关系型数据库和非关系型数据库关系型数据库(RDBMS):采用关系模型来组织数据库,关系模型类似二维表格。比如:Oracle、MySQL、SQL Server、DB2…非关系型数据库:不规定使用SQL来实现, 更多指NoSQL

2021-09-16 18:40:29 163

转载 研究生论文写作规范(转载)

尊重他人劳动成果,文章来源:https://wangzhangfei.blog.csdn.net/article/details/102657382           &nbsp

2021-08-27 21:42:23 1154

转载 SCI投稿经验(转载)

1.论文写作论文写作非一日之功。前期要阅读大量文献,并将阅读文献做一个小记,这样不会出现读完后一点儿印象都没有。更重要的是为以后的参考文献选用打下良好基础。因为你引用参考文献时要有针对性,不能乱引用。在这里我建议大家采用尾注管理文献,该软件对文献管理与论文写作非常有用。采用该软件你可将所有的文献进行分类管理,并可在摘要内做适当记录。在书写论文时,尾注在参考文献管理方面的优势就体现出来了,一切参考文献都是一键输入,根...

2021-08-27 21:19:20 723

原创 如何将电脑上的文件上传至gitee已创建好的仓库中

如何将电脑上的文件上传至gitee已创建好的仓库中?①在你的电脑找到要上传的文件,比如我这里要上传javaData这个文件夹中的HelloWorld.java文件,接着鼠标右键,点击Git Bash Here打开之后变成这样,接着输入命令 git init此时你会发现你的当前文件夹会多了一个.git文件夹点击.git文件夹,进入之后发现是这样,然后用记事本打开config文件,进行配置自己的用户名和邮箱,点击保存回到Gitee页面,找到已创建好的仓库的克隆/下载按钮,然后里面有个连接,点击复

2021-08-27 10:29:10 809 1

原创 LeetCode 797:所有可能的路径

1. 题目描述给定一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出(不要求按特定顺序)。二维数组的第 i 个数组中的单元都表示有向图中 i 号节点所能到达的下一些节点,空就是没有下一个结点了。输入:graph = [[1,2,3],[2],[3],[]]输出:[[0,1,2,3],[0,2,3],[0,3]]2. 题目分析首先我们根据题目描述画出图,并分析输入输出,输入输出都是二维数组,根据题目描述,我们采用深度优先搜索遍历图,求出所有可能的路径。

2021-08-25 22:22:14 750

原创 遍历二叉树(递归&&非递归)

一、非递归遍历二叉树二叉树的非递归我们是借助数据结构栈来实现的:1.前序遍历public void preOrderTraversalNor(TreeNode root){ if(root==null){ return; } Stack<TreeNode> stack = new Stack<>(); TreeNode cur = root; //重点:注意循环的条件

2021-08-17 16:20:42 99

原创 Jupyter notebook中添加conda虚拟环境

遇到问题:安装完Anaconda利用conda创建了虚拟环境,但是启动jupyter notebook之后却找不到虚拟环境。原因:是由于在虚拟环境下缺少kernel.json文件。解决方法:首先激活之前创建好的虚拟环境:activate 环境名称安装ipykernel:python conda install ipykernel将环境写入notebook的kernel中:python -m ipykernel install --user --name 环境名称 --display-

2021-05-15 22:42:07 3362

空空如也

空空如也

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

TA关注的人

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