- 博客(40)
- 收藏
- 关注
原创 寻找两个正序数组的中位数
合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5。合并数组 = [1,2,3] ,中位数 2。就是将两个数组合并起来,再找其中位数。请你找出并返回这两个正序数组的。的正序(从小到大)数组。算法的时间复杂度应该为。
2023-12-19 22:35:41 33 1
原创 用栈实现队列
利用连个栈,一个负责进栈,一个负责出栈,每次需要出栈的时候,就把进栈的元素全部添加进出栈中,还需要判断出栈元素是否为空。这样才能保证出栈顺序先进先出。请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(
2023-12-19 22:21:21 27
原创 二叉树的右视图
想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。中序遍历,每当ans的大小和树的深度相同的,将树的值添加到ans去。
2023-12-19 22:05:12 37
原创 二叉树的最大路径和
被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中。最优路径是 15 -> 20 -> 7 ,路径和为 15 + 20 + 7 = 42。最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6。节点,且不一定经过根节点。是路径中各节点值的总和。给你一个二叉树的根节点。
2023-12-19 19:02:07 31
原创 56.合并区间
区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。表示若干个区间的集合,其中单个区间为。请你合并所有重叠的区间,并返回。
2023-12-19 18:48:53 15
原创 42.接雨水
上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。没当栈内元素小于进栈元素时,就要添加一次面积。面积就等于 宽度*长度。的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。个非负整数表示每个宽度为。
2023-12-19 18:32:35 9
原创 字符串相加
利用双指针算法,将两个指针分别指向两个字符串末尾,依次相加。你不能使用任何內建的用于处理大整数的库(比如。), 也不能直接将输入的字符串转换为整数形式。,计算它们的和并同样以字符串形式返回。给定两个字符串形式的非负整数。
2023-12-19 18:12:45 9
原创 合并K个升序链表
请你将所有链表合并到一个升序链表中,返回合并后的链表。给你一个链表数组,每个链表都已经按升序排列。将它们合并到一个有序链表中得到。利用优先队列,以 val 排序。
2023-12-19 17:49:55 13
原创 K个一组翻转链表
是一个正整数,它的值小于或等于链表的长度。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。的整数倍,那么请将最后剩余的节点保持原有顺序。个节点一组进行翻转,请你返回修改后的链表。将链表分成三分,已翻转,待翻转,未翻转。
2023-12-18 17:55:12 12
原创 LRU缓存
/ 该操作会使得关键字 2 作废,缓存是 {1=1, 3=3}lRUCache.put(4, 4);// 该操作会使得关键字 1 作废,缓存是 {4=4, 3=3}lRUCache.put(2, 2);// 缓存是 {1=1, 2=2}// 返回 -1 (未找到)lRUCache.get(1);// 返回 -1 (未找到)lRUCache.put(1, 1);// 缓存是 {1=1}lRUCache.get(1);请你设计并实现一个满足。的平均时间复杂度运行。
2023-12-18 17:30:12 7
原创 盛水最多的容器
图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。双指针遍历,一头一尾每次更新两个指针之间的最大面积。轴共同构成的容器可以容纳最多的水。找出其中的两条线,使得它们与。返回容器可以储存的最大水量。
2023-12-18 14:53:07 8
原创 判断子序列
如果有大量输入的 S,称作 S1, S2, ... , Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。在这种情况下,你会怎样改变代码?字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。添加此问题并且创建所有测试用例。
2023-12-18 12:52:09 11
原创 125.验证回文串
如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个。利用StringBuffer,Character包装类库的各种方法实现。"amanaplanacanalpanama" 是回文串。字母和数字都属于字母数字字符。
2023-12-18 12:45:56 9
原创 274.H指数
根H 指数的定义,如果当前 H\text{H}H 指数为 hhh 并且在遍历过程中找到当前值 citations[i]>textit{citations}[i] > hcitations[i]>h,则说明我们找到了一篇被引用了至少 h+1h+1h+1 次的论文,所以将现有的 hhh 值加 111。给定数组表示研究者总共有 5 篇论文,每篇论文相应的被引用了 3, 0, 6, 1, 5次。由于研究者有 3 、篇论文每篇。篇论文被引用的次数。被引用了 3次,其余两篇论文每篇被引用。篇论文被引用次数大于等于。
2023-12-18 12:41:10 11
原创 167两数之和
1 与 0 之和等于目标数 -1。因此 index1 = 1, index2 = 2。返回 [1, 2]。2 与 7 之和等于目标数 9。因此 index1 = 1, index2 = 2。返回 [1, 2]。2 与 4 之和等于目标数 6。因此 index1 = 1, index2 = 3。返回 [1, 3]。你所设计的解决方案必须只使用常量级的额外空间。,请你从数组中找出满足相加之和等于目标数。的形式返回这两个整数的下标。以长度为 2 的整数数组。重复使用相同的元素。
2023-12-18 12:36:05 18
原创 45.跳跃游戏2
从下标为 0 跳到下标为 1 的位置,跳。向前跳转的最大长度。生成的测试用例可以到达。跳到最后一个位置的最小跳跃数是。步到达数组的最后一个位置。处,你可以跳转到任意。
2023-12-18 12:06:54 25
原创 169多数元素
本题的解法有很多种,我采用的是排序法,因为众数排序后一定出现在数组 的中间。你可以假设数组是非空的,并且给定的数组总是存在多数元素。,返回其中的多数元素。多数元素是指在数组中出现次数。
2023-12-18 11:47:49 25
原创 删除有序数组重复项2
并且原数组的前五个元素被修改为 0, 0, 1, 1, 2, 3, 3。, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3。删除重复出现的元素,使得出现次数超过两次的元素。我们照样采用双指针算法,只不过需要稍加改动。并在使用 O(1) 额外空间的条件下完成。不需要考虑数组中超出新长度后面的元素。不需要考虑数组中超出新长度后面的元素。函数应返回新长度 length = 5。函数应返回新长度 length = 7。不要使用额外的数组空间,你必须在。,返回删除后数组的新长度。
2023-12-18 00:16:10 8
原创 删除有序数组的重复项
当不等时,就用i指针(快指针)上的元素覆盖掉慢指针上的元素。当数组前一个元素等于后一个元素时,s指针不移动。不处理数组第一个元素,利用双指针算法解决!,返回删除后数组的新长度。删除重复出现的元素,使每个元素。
2023-12-18 00:05:46 29
原创 最长公共前缀
没啥技巧,就是遍历依次比较每个字符串。找到两两字符串的最长公共前缀。编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串。输入不存在公共前缀。
2023-12-17 23:51:19 10 1
原创 最长回文字符串
如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。依次遍历字符串每个节点,再从每个节点扩散开来。"aba" 同样是符合题意的答案。主要有下面四种扩散方法!
2023-12-17 23:25:21 10 1
原创 无重复字符的最长字串
给定一个字符串s,请你找出其中不含有重复字符的的长度。3因为无重复字符的最长子串是"abc",所以其长度为 3。1因为无重复字符的最长子串是"b",所以其长度为 1。3因为无重复字符的最长子串是"wke",所以其长度为 3。请注意,你的答案必须是的长度,"pwke"是一个子序列,不是子串。
2023-12-17 22:38:12 13 1
原创 142.环形链表
这里我们采用双指针算法。快指针每次走2步,慢指针每次走1步。这样如何存在环的话,慢指针就会与快指针相遇。指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数。如果链表中有某个节点,可以通过连续跟踪。链表中有一个环,其尾部连接到第二个节点。,返回链表开始入环的第一个节点。来表示链表尾连接到链表中的位置(,仅仅是为了标识链表的实际情况。返回索引为 1 的链表节点。给定一个链表的头节点。如果链表无环,则返回。,则在该链表中没有环。当慢指针和快指针相遇时。
2023-12-17 22:06:49 18 1
原创 142.链表相交
这个题目就是先求出两个链表的长度,然后把较长的那个链表,向前移动他们的长度差。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。从各自的表头开始算起,链表 A 为 [0,9,1,2,4],链表 B 为 [3,2,4]。从各自的表头开始算起,链表 A 为 [2,6,4],链表 B 为 [1,5]。在 B 中,相交节点前有 1 个节点。相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。相交节点的值为 2 (注意,如果两个链表相交则不能为 0)。
2023-12-17 21:54:39 20 1
原创 DFS和BFS
其实两算法的思路很简单,主要就是代码编写上的细节问题。上面这两道题都是很经典的dfs和bfs问题。利用一个队列和boolean数组实现。
2023-12-16 23:17:37 11
原创 如何实现git远程连接
git commit -m "评论" //将文件推送至本地仓库。git remote add origin ssh地址。随便创建一个文件夹,并打开git bash。创建gitee仓库并复制ssh地址。
2023-12-06 20:47:46 51 1
原创 C++和java的区别
C++对所有的数字类型有标准的范围限制,但字节长度是跟具体实现相关的,同一个类型在不同操作系统可能长度不一样。Java在所有平台上对所有的基本类型都有标准的范围限制和字节长度。Java 编译器(javac)先将java源程序编译成Java字节码(.class),JVM负责解释执行字节码文件。C++需要显式的内存管理,但有第三方的框架可以提供垃圾搜集的支持。Java 是自动垃圾收集的。Java没有对任何之前的语言向前兼容。Java只允许单继承,需要多继承的情况要使用接口。C++支持指针,引用,传值调用。
2023-11-30 14:30:33 8
原创 209.长度最小的子数组
如果不存在符合条件的子数组,返回。是该条件下的长度最小的子数组。找出该数组中满足其总和大于等于。个正整数的数组和一个正整数。
2023-10-24 21:59:21 13
原创 27. 移除元素
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。不要使用额外的数组空间,你必须仅使用。的元素,并返回移除后数组的新长度。一个简单的双指针应用。
2023-10-24 21:37:57 14
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人