- 博客(52)
- 收藏
- 关注
原创 【随想】每日两题Day.22
当父节点被remove时,孩子结点就加入队列,直到size为0时,就是这一层的结点,加入到二维数组。再进行下一层的遍历。(即逐层地,从左到右访问所有节点)。会了这一种思路就可以一打十啦(已完成)。层序遍历利用队列的长度快照为每层的长度。
2023-12-24 11:25:56
472
原创 【随想】每日两题Day.21
我们利用入栈结点,然后出栈时将数值存入结果数组,然后要入栈此节点的孩子结点。我们用栈存储我们遍历过的结点,用来我们回溯,当cur一直向左直到为null时,我们回溯。所以将左 右 入栈的顺序颠倒后,再将结果数组reverse,就完成了后序遍历的迭代。中序遍历的迭代与前序后序不同,因为他是左 根 右 ,所以不是遍历到就存储的。将cur指向出栈的结点,然后加入到结果数组,再将cur指向cur.right。由于栈是先进后出,所以我们要先入栈右结点,后入栈左节点。根据前序遍历的特点:根 左 右。
2023-12-20 13:22:38
595
原创 【随想】每日两题Day.20(实则一题)
由于是存前K个高频元素,我们先用Map存元素与出现次数,然后用优先级队列(PriorityQueue)来存储二元组(元素,次数),实际底层是大顶堆,然后取出前K个元素就好啦。,请你返回其中出现频率前。你所设计算法的时间复杂度。
2023-12-19 19:57:35
442
原创 【随想】每日两题Day.19
此题思路为,遍历字符串数组,遇到数字就入栈,遇到符号就出栈两个符号(注意num1 num2顺序),然后进行运算后再将结果压入栈,最后栈中的唯一元素即为结果。当队列add时,只要在val前 且比val小的 都poll掉,因为维护他们没有意义了,只要有val在窗口的最大值都是val。当队列poll时,只有当val == myQueue.peek() 时才poll,因为其他元素都在add时删除了。的滑动窗口从数组的最左侧移动到数组的最右侧。返回一个表示表达式值的整数。队列的peek(),永远都是窗口的最大值。
2023-12-05 15:14:02
978
原创 【随想】每日两题Day.18
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。我们利用栈来判断:当遇到左括号,就像栈中加入相应的右括号。当遇到右括号时,就弹出栈顶元素,如果类型不相同则false。我们可以用栈来实现,但是最后的结果是栈中元素的倒序,所以我们可以直接用一个字符串来模拟栈的过程。会选择两个相邻且相同的字母,并删除它们。,判断字符串是否有效。
2023-12-04 12:20:37
471
原创 【随想】每日两题Day.17
此题我犯了一个天大的错误,竟然在构造方法里声明stack1和stack2。在方法中的局部变量怎么能给其他方法提供使用呢!应该在类中声明成员变量,然后在构造方法初始化!使用一个队列实现栈,就是每次push时将队列中所有元素,都remove再add 使得添加的元素为首元素。以此类推所有的元素都是倒序排列的 也就是栈!就是两个队列哪个空就把元素都放到空的那个 然后知道走到最后一个元素。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(请你仅使用两个栈实现先入先出队列。
2023-11-20 12:53:17
132
原创 【随想】每日两题Day.16(实则一题)
你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。你不需要考虑数组中超出新长度后面的元素。方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。// 根据你的函数返回的长度, 它会打印出数组中。// 在函数里修改输入数组对于调用者是可见的。为什么返回数值是整数,但输出的答案是数组呢?不要使用额外的数组空间,你必须仅使用。的元素,并返回移除后数组的新长度。函数应该返回新的长度。
2023-11-16 12:13:50
116
原创 【随想】每日两题Day.15
所以用getNext()函数求最长公共前后缀,若为0直接返回false,若不为0 进行整除操作。此思路为,若字符串s是由子串重复构成的,那么s + s 后 去掉首尾字符,其中肯定还包含子串s。此思路为,如果字符串s是由子串重复构成,那么(s长度) 一定可以整除 (s-最长公共前后缀)"leeto" 没有在 "leetcode" 中出现,所以返回 -1。字符串的第一个匹配项的下标(下标从 0 开始)。第一个匹配项的下标是 0 ,所以返回 0。"sad" 在下标 0 和 6 处匹配。给定一个非空的字符串。
2023-11-15 13:12:54
138
1
原创 【随想】每日两题Day.14
中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。利用 StringBuilder 类中的 setCharAt(下标,新字符) 方法来做字符串翻转。如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。此方法与上题进阶方法一致,先翻转整个字符串,再翻转前n个字符,后n个字符。进阶方法:先翻转整体字符串,再翻转每一个单词。反转后的字符串中不能存在前导空格和尾随空格。中使用至少一个空格将字符串中的。
2023-11-02 15:38:42
97
原创 【随想】每日两题Day.13
此题也利用了上一题的字符串翻转,也可以用库函数。值得注意的是最后返回是new String(c);编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组。这个题很简单,要学的就是 ^= 操作交换数据,也可以用tmp交换。、使用 O(1) 的额外空间解决这一问题。不要给另外的数组分配额外的空间,你必须。,从字符串开头算起,每计数至。
2023-10-18 19:46:14
136
原创 【随想】每日两题Day.12
这个题和三数之和思路一样,只不过多一层循环,并且边界条件和剪枝操作改一下即可。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。此题难度不小,在日后复习要多敲代码反复品味。注意,输出的顺序和三元组的顺序并不重要。请你找出并返回满足下述全部条件且。答案中不可以包含重复的三元组。唯一可能的三元组和不为 0。唯一可能的三元组和为 0。,判断是否存在三元组。
2023-10-09 21:18:08
179
原创 【随想】每日两题Day.11
这道题的输入很关键,要用set来接收不知长度的输入,然后怎么处理的输入很关键。这个题并不难,要掌握的是字符串的 toCharArray() 方法,还有很简便的写法。【评分标准】该题要求输出差运算后集合中的元素,结果完全正确得20分,每个测试点4分。输出元素的顺序与原有集合A输入的顺序一致。【样例说明】从标准输入接收集合中的自然数元素,输出集合A、B的差集。输入两个集合A、B,每个集合中元素都是自然数。从标准输入接收集合中的自然数元素,以空格分隔。集合A、B的差集,由所有属于A但不属于B的元素构成。
2023-10-08 21:01:14
319
原创 【随想】每日两题Day.10(实则一题)
这道题如果四个数组一起计算,那样的时间复杂度会达到n的4次方。所以我们考虑 muns1 和 muns2 先算,然后再通过0 - nums3 和 nums4 数组相加来算出target ,去查找1 和 2 是否有此值。我们意识到想要知道一个集合中是否出现过某一个元素,我们首选哈希表。所以经思考,我们 key 要存target ,value 要存 出现过的次数,所以我们用 HashMap 存储。通过这道题发现了很多自己基础的问题,Map的创建不熟悉,Map的基本方法不熟悉,for循环的简写不熟悉。
2023-10-07 12:23:22
171
原创 【JavaGuide学习笔记】Day.4
JAVA基础常见面试题(下)1.Exception 和 Error 有什么区别?2.Checked Exception 和 Unchecked Exception 有什么区别?3.Throwable 类常用方法有哪些?4.try-catch-finally 如何使用?5.finally 中的代码一定会执行吗?6.如何使用 try-with-resources 代替 try-catch-finally ?7.什么是泛型?有什么作用?8.泛型的使用方式有哪几种?9.反射?
2023-09-23 20:58:32
110
原创 【随想】每日两题Day.9
不是快乐数会无限循环,循环起来了,那么我们就只需要判断得到的数字 之前是否得到过。HashMap的操作:map.put() map.containsKey() map.get()本题学到的知识有,数组的判空:不光是nums == null,还要判断nums.length == 0。由于本题最重要的就是查找一个元素是否出现过,且要有下标和值两个元素,我们考虑用map。因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。整数,并返回它们的数组下标。,请你在该数组中找出。
2023-09-23 16:50:15
125
原创 【JavaGuide学习笔记】Day.3
JAVA基础常见面试题(中)1.面向对象和面向过程的区别2.对象的实体与对象的引用有何不同?3.对象相等和引用相等的区别4.构造方法有哪些特点?是否可被override?5.面向对象的三大特征6.接口和抽象类有什么共同点和区别?7.深拷贝和浅拷贝区别了解吗?什么是引用拷贝?8.==和 equals() 的区别?9.hashCode() 和 equals()10.String、StringBuffer、StringBuilder11.String 为什么是不可变
2023-09-21 15:43:48
194
原创 【随想】每日两题Day.8
给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。
2023-09-21 15:04:46
445
原创 【随想】每日两题Day.6
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
2023-09-14 14:28:44
116
原创 【随想】每日两题Day.5 (实则一题)
你可以选择使用单链表或者双链表,设计并实现自己的链表。val和next。val是当前节点的值,next是指向下一个节点的指针/引用。如果是双向链表,则还需要属性prev以指示链表中的上一个节点。假设链表中的所有节点下标从开始。实现index-1valvalvalindexindexindexindex// 链表变为 1->2->3// 返回 2// 现在,链表变为 1->3// 返回 3。
2023-09-11 21:07:54
247
原创 【随想】每日两题Day.3(实则一题)
给你一个正整数n,生成一个包含1到n2所有元素,且元素按顺时针顺序螺旋排列的n x n正方形矩阵matrix。
2023-09-09 17:52:10
422
原创 【随想】每日两题Day.2
这道题目采用的是滑动窗口法,用right来控制终止位置,当sum>=target时(一点要注意包括等于!然后依次窗口向右走,不断更新数组的长度。此题可以暴力排序,但是追求速率将时间复杂度降低到O(n),采用双指针方法。下标left和right的值,哪个大先存哪个,从后往前存数据。平方后,数组变为 [16,1,0,9,100]排序后,数组变为 [0,1,9,16,100]如果不存在符合条件的子数组,返回。是该条件下的长度最小的子数组。个正整数的数组和一个正整数。组成的新数组,要求也按。
2023-09-08 13:25:27
151
原创 【JavaGuide学习笔记】Day.1
JVM是运行Java字节码的虚拟机,做到使用相同的结果,字节码(.class文件)和不同系统的JVM实现是Java语言‘一次编译,多处运行’的关键所在。Java程序要先编译后解释,先经过编译生成字节码,然后字节码由Java解释器来解释执行。JRE是Java运行时环境,仅包含Java应用程序的运行时的环境和必要的类库。整数型:byte(1)、short(2)、int(4)、long(8)解释型:将源代码一句一句的解释为机器代码后执行。浮点型:float(4)、doule(8)字符类型:char(2)
2023-09-07 12:23:35
675
原创 【随想】每日两题Day.1
给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。numstarget= 949 出现在nums中并且下标为 4numstarget= 2-12 不存在nums中因此返回 -1numsn[1, 10000]nums。
2023-09-07 11:14:43
204
原创 【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点
给定一棵二叉搜索树,请找出其中第k大的节点的值。分析: 二叉搜索树的特点就是根左
2023-09-05 12:25:50
222
原创 <Java EE 进阶> 2.Spring 创建和使用
(2)添加 Spring 框架支持(spring-context、spring-beans)(2)通过Spring上下文,获取某一个指定Bean对象。(2)将创建的 Bean 注册到 Spring 容器中。Bean就是java中一个普通对象。(1)创建一个普通Maven项目。在java文件夹下创建一个启动类。(1)得到Spring上下文对象。(1)创建Bean对象。(3)使用Bean对象。
2023-01-31 17:24:23
567
原创 <Java EE 进阶> 1.Spring核心思想
IoC 即 Inversion of Control 意思是控制反转.所谓控制反转就是控制和反转类的生命周期.
2023-01-30 21:11:55
352
原创 关于Double范围的思考
当我们看到数据范围是10的100次幂的时候,我们想到int肯定是不够大的,那么考虑用long。所以,比long还要大的是double。当数据范围过大时要记得用double哦!但问题是long也不够大。
2022-11-16 19:18:27
348
原创 <Java> 图书管理系统. 课程设计之经典(学不会给我发红包)
图书管理系统就是利用计算机,结合互联网对图书进行结构化、自动化管理的一种软件,来提高对图书的管理效率。本系统采用Java+Servlet+Jsp 的方式实现基于web的图书管理系统。Package(书-包)book(书-类)Book(书架-类)BookList(操作-包)operation(操作接口)IOperation(添加图书)AddOperation(借阅图书)BorrowOperation(删除图书)DelOperation(显示图书)DisplayOperati
2022-05-18 19:35:58
3051
165
原创 <Java> 类和对象专题大汇总.(学不会包退)
类和对象1.创建一个类2.实例化对象3.this关键字4.初始化对象1.构造方法2.编译器生成构造函数3.this构造5.封装1.访问修饰限定符2.为隐藏变量提供公共接口编译器自动生成公共接口6.static1.static修饰成员变量(类对象)2.static修饰成员方法(类方法)3.static成员变量的初始化(代码块)7.内部类1.实例内部类2.怎么new一个实例内部类对象?3.实例内部类中不能定义静态成员变量?4.对象的打印
2022-05-13 17:07:38
2415
160
原创 <Java SE> 数组详解大全(附带练习题).一维数组、二维数组、数组拷贝、数组遍历...
一.一维数组1.定义数组的三种方式2.遍历数组的三种方法3.数组是引用类型4.array1=array25.思考题6.数组作为返回值7.实现数组转字符串函数8.数组拷贝的三种方式9.二分查找10.冒泡排序二.二维数组1.二维数组的创建2.打印二维数组的三种方式3.不规则数组
2022-05-08 22:22:44
595
85
原创 <八大排序>万字详解(Java实现).插入排序、希尔排序、堆排序、快速排序、归并排序、计数排序...
一.插入排序(一).直接插入排序(二).堆排序希尔排序1.堆的铺垫2.向下调整算法(建小堆为例)3.建堆4.排升序建大堆还是建小堆?三.交换排序(一).冒泡排序4.冒泡与直接插入排序相(二).快速排序1.挖坑法2.左右指针法3.前后指针法四.归并排序(一).归并排序1.思路:2.代码:3.对文件中的数据排序:五.非递归的归并排序与快排六.计数排序(一).计数排序1.思路:2.代码:3.时间/空间复杂度:七.七大排序的总结对比
2022-05-04 17:14:35
2871
218
原创 <Java SE> 5道递归计算,创建数组,数组遍历,JVM内存分配...
一.递归1.递归计算N!2.按顺序打印一个数字的每个数3.递归求1+2+3+...+104.递归返回一个数的每位的和5.递归求斐波那契数列6.迭代版本的斐波那契二.数组1.定义数组的三种方式2.遍历数组的三种方法3.数组是引用类型4.array1=array25.思考题array是一个引用变量,创建在栈上,存放的是堆上的一个地址如果没有初始化,默认值是0boolean类型的默认值是false
2022-04-30 20:22:48
1699
145
原创 <Java>逻辑控制,方法详解,重载,牛客习题,IDEA调试方法...
一.逻辑控制+方法1.java输入2.循环输入3.代码风格4.IDEA如何进行调试5.switch6.循环结构7.三种输出8.java生成随机数9.java方法二.习题+方法21.返回二进制中1的个数2.获取一个二进制序列中的偶数位和奇数位,分别输出二进制序列3.JAVA比较字符串是否相同4.牛客网ACM书写格式5.方法的重载
2022-04-27 20:11:46
2301
158
原创 <JAVA> java入门面向0基础教程(数据类型,运算符)
目录一.JAVA数据类型1.JAVA基本数据类型(8种) (1 2 4 8 4 8 2 无)2.整型 int3.长整型 long4.字节型 byte5.浮点型 float 双精度浮点型 double6.字符型 char7.类包装类型8.布尔类型 boolean9.类型转换10.字符串类型 String二.运算符1.错题2.除0引发的异常3.%取模运算4.+=的自动类型转换5.逻辑非!6.无符号右移 >>>7.三
2022-04-23 21:53:09
1306
120
原创 <数据结构>栈和队列. 顺序表实现栈,单链表实现队列.
一.栈1.概念:2.实现一个栈(1)头文件声明(2)函数实现源文件(3)测试代码二.队列1.概念:2.实现一个队列(1)头文件声明(2)函数实现源文件(3)测试代码声明(2)函数实现源文件(3)测试代码一.栈1.概念:栈是一种只能从栈顶入,栈顶出的一种数据结构。先进入的后出来(像弹夹一样)2.实现一个栈经过分析,我们用顺序表实现栈是最高效的。
2022-04-18 17:12:04
1374
75
原创 <数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点.
一.反转链表 1.头插法2.迭代法二.链表的中间节点1.快慢指针法2.指针数组法三.合并两个有序链表尾插法四.环形链表(1)快慢指针法五.环形链表(2)思路分析:代码实现:
2022-04-15 15:51:05
1456
131
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人