自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面试题 03.02. 栈的最小值

面试题 03.02. 栈的最小值请设计一个栈,除了常规栈支持的pop与push函数以外,还支持min函数,该函数返回栈元素中的最小值。执行push、pop和min操作的时间复杂度必须为O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.getMin(); --> 返回 -3.minStack.pop();minStack.t

2021-03-23 13:11:49 53

原创 面试题 03.01. 三合一

面试题 03.01. 三合一三合一。描述如何只用一个数组来实现三个栈。你应该实现push(stackNum, value)、pop(stackNum)、isEmpty(stackNum)、peek(stackNum)方法。stackNum表示栈下标,value表示压入的值。构造函数会传入一个stackSize参数,代表每个栈的大小。示例1: 输入:["TripleInOne", "push", "push", "pop", "pop", "pop", "isEmpty"][[1], [0, 1

2021-03-23 13:11:26 50

原创 面试题 02.08. 环路检测

面试题 02.08. 环路检测给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node

2021-03-23 11:49:51 48

原创 面试题 02.07. 链表相交

面试题 02.07. 链表相交给定两个(单向)链表,判定它们是否相交并返回交点。请注意相交的定义基于节点的引用,而不是基于节点的值。换句话说,如果一个链表的第k个节点与另一个链表的第j个节点是同一节点(引用完全相同),则这两个链表相交。题解双指针 – 相交链表public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { ListNode A = h

2021-03-23 11:49:02 38

原创 面试题 02.06. 回文链表

面试题 02.06. 回文链表难度简单54收藏分享切换为英文接收动态反馈编写一个函数,检查输入的链表是否是回文的。示例 1:输入: 1->2输出: false 示例 2:输入: 1->2->2->1输出: true 题解采用反转链表class Solution { public boolean isPalindrome(ListNode head) { ListNode fast = head, slow = head;

2021-03-23 11:48:32 55

原创 面试题 02.05. 链表求和

面试题 02.05. 链表求和给定两个用链表表示的整数,每个节点包含一个数位。这些数位是反向存放的,也就是个位排在链表首部。编写函数对这两个整数求和,并用链表形式返回结果。示例:输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295输出:2 -> 1 -> 9,即912题解class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2)

2021-03-23 11:47:57 36

原创 面试题 02.04. 分割链表

面试题 02.04. 分割链表编写程序以 x 为基准分割链表,使得所有小于 x 的节点排在大于或等于 x 的节点之前。如果链表中包含 x,x 只需出现在小于 x 的元素之后(如下所示)。分割元素 x 只需处于“右半部分”即可,其不需要被置于左右两部分之间。示例:输入: head = 3->5->8->5->10->2->1, x = 5输出: 3->1->2->10->5->5->8题解class Solution {

2021-03-23 10:00:19 33

原创 面试题 02.03. 删除中间节点

面试题 02.03. 删除中间节点实现一种算法,删除单向链表中间的某个节点(即不是第一个或最后一个节点),假定你只能访问该节点。示例:输入:单向链表a->b->c->d->e->f中的节点c结果:不返回任何数据,但该链表变为a->b->d->e->f题解只能访问访问当前节点将下一个节点的值赋给当前节点!!!class Solution { public void deleteNode(ListNode node) {

2021-03-21 22:14:25 38

原创 面试题 02.02. 返回倒数第 k 个节点

面试题 02.02. 返回倒数第 k 个节点难度简单62收藏分享切换为英文接收动态反馈实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。示例:输入: 1->2->3->4->5 和 k = 2输出: 4题解快慢指针class Solution { public int kthToLast(ListNode head, int k) { ListNode first = head; ListNode secon

2021-03-21 22:13:54 28

原创 面试题 02.01. 移除重复节点

面试题 02.01. 移除重复节点难度简单95收藏分享切换为英文接收动态反馈编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1: 输入:[1, 2, 3, 3, 2, 1] 输出:[1, 2, 3]题解class Solution { public ListNode removeDuplicateNodes(ListNode head) { if (head == null) { return head; }

2021-03-21 22:13:23 34

原创 面试题 01.09. 字符串轮转

面试题 01.09. 字符串轮转字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。示例1: 输入:s1 = "waterbottle", s2 = "erbottlewat" 输出:True题解class Solution { public boolean isFlipedString(String s1, String s2) { if (s1 == null || s2

2021-03-21 22:12:50 28

原创 面试题 01.08. 零矩阵

面试题 01.08. 零矩阵编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。示例 1:输入:[ [1,1,1], [1,0,1], [1,1,1]]输出:[ [1,0,1], [0,0,0], [1,0,1]]题解class Solution { public void setZeroes(int[][] matrix) { boolean isFirstRowHaveZero = false; bo

2021-03-21 22:12:09 42

原创 面试题 01.07. 旋转矩阵

面试题 01.07. 旋转矩阵给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。不占用额外内存空间能否做到?示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]题解时间复杂度:O(N2)O(N^2)O(N2),其中 NNN 是 matrix\textit{matrix}ma

2021-03-21 22:10:25 33

原创 面试题 01.06. 字符串压缩

面试题 01.06. 字符串压缩字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。示例1: 输入:"aabcccccaaa" 输出:"a2b1c5a3"题解遍历一次字符串时间复杂度:O(n)class Solution { public String compressString(String S

2021-03-21 22:09:30 29

原创 面试题 01.02. 判定是否互为字符重排

01.02. 判定是否互为字符重排给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。示例 1:输入: s1 = "abc", s2 = "bca"输出: true 题解采用HashMap 存储字符出现次数class Solution { public boolean CheckPermutation(String s1, String s2) { if (s1.length() != s2.length())

2021-03-20 20:39:47 33

原创 面试题 01.03. URL化

面试题 01.03. URL化URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)示例1:输入:"Mr John Smith ", 13输出:"Mr%20John%20Smith:"题解class Solution { public String replaceSpaces(String S, int length) {

2021-03-20 20:39:16 27

原创 面试题 01.04. 回文排列

面试题 01.04. 回文排列给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。示例1:输入:"tactcoa"输出:true(排列有"tacocat"、"atcocta",等等)题解long 占 8个字节、64位ASCII码有128个class Solution { public boolean canPermutePalindrome(String s) {

2021-03-20 20:38:46 52

原创 面试题 01.05. 一次编辑

面试题 01.05. 一次编辑字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。示例 1:输入: first = "pale"second = "ple"输出: True题解class Solution { public boolean oneEditAway(String first, String second) { if (first == null || second =

2021-03-20 20:38:04 32

原创 面试题 01.01. 判定字符是否唯一

面试题 01.01. 判定字符是否唯一实现一个算法,确定一个字符串 s 的所有字符是否全都不同。示例 1:输入: s = "leetcode"输出: false 题解判断是否唯一考虑用Set 或 Map时间复杂度:O(n)O(n)O(n)空间复杂度:$ O(n)$class Solution { public boolean isUnique(String astr) { HashSet<Character> set = new HashSet&l

2021-03-19 21:52:10 35

空空如也

空空如也

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

TA关注的人

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