自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 剑指Offer刷题记录(Java)

面试题03. 数组中重复的数字面试题04. 二维数组中的查找面试题05. 替换空格面试题06. 从尾到头打印链表面试题07. 重建二叉树面试题09. 用两个栈实现队列面试题10- I. 斐波那契数列 面试题10- II. 青蛙跳台阶问题面试题11. 旋转数组的最小数字面试题12. 矩阵中的路径面试题13. 机器人的运动范围面试题14- I. 剪绳子面试题14- II. 剪绳子 II面试题15. 二进制中1的个数 面试题16. 数值的整数次方面试题17. 打印从1到最大的

2020-06-02 11:39:21 163

原创 LeetCode刷题记录

两数之和两数相加无重复字符的最长子串寻找两个正序数组的中位数最长回文子串Z 字形变换整数反转字符串转换整数 (atoi)回文数正则表达式匹配盛最多水的容器整数转罗马数字罗马数字转整数最长公共前缀三数之和最接近的三数之和电话号码的字母组合四数之和删除链表的倒数第N个节点有效的括号合并两个有序链表括号生成合并K个排序链表两两交换链表中的节点K 个一组翻转链表删除排序数组中的重复项移除元素实现 strStr()两数相除串联所有单词的子串下一个排列最长.

2020-06-02 11:25:30 65

原创 LeetCode. 142环形链表II

142. 环形链表II题目给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连接到第二个节点。[外链图片转存失败,源站可能有防盗链机

2020-07-27 09:46:14 110

原创 面试题36. 二叉搜索树与双向链表

题目输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。为了让您更好地理解问题,以下面的二叉搜索树为例:我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。下图展示了上面的二叉搜索树转化成的链表。“head” 表示指向链表中有最小元素的节点。特别地,我们希望可以就地完成转换操作。当转化完成以后,树中节点的左指针需要指

2020-06-09 11:11:52 111

原创 面试题35. 复杂链表的复制

题目请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。示例示例1:输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]示例2:输入:head = [[1,1],[2,1]]输出:[[1,1],[2,1]]示例3:输入:h

2020-06-09 09:54:48 143

原创 面试题34. 二叉树中和为某一值的路径

题目输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:[ [5,4,11,2],

2020-06-08 16:20:49 103

原创 面试题33. 二叉搜索树的后序遍历

题目输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。参考以下这颗二叉搜索树: 5 / \ 2 6 / \ 1 3示例输入: [1,6,3,2,5]输出: false输入: [1,3,2,6,5]输出: true代码class Solution { public boolean verifyPostorder(int[] postorder)

2020-06-08 15:31:57 81

原创 面试题32-III.从上到下打印二叉树III

题目请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。示例例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [20,9], [15,7]]代码和前一题一样,只要加一行判断从上到下打印二叉树,又称为二叉树的广度优先搜索(BFS),BFS通常借助队

2020-06-03 20:50:51 176

原创 面试题32-II.从上到下打印二叉树II

题目从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。示例例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回:[3,9,20,15,7]代码从上到下打印二叉树,又称为二叉树的广度优先搜索(BFS),BFS通常借助队列来实现。算法流程:特例处理: 当根节点为空,则返回空列表 [] ;初始化: 打印结果列表 res = [] ,包含根节点的队列 queue = [r

2020-06-03 17:15:58 164

原创 面试题32-1. 从上到下打印二叉树

题目从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。示例例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回:[3,9,20,15,7]代码从上到下打印二叉树,又称为二叉树的广度优先搜索(BFS),BFS通常借助队列来实现。算法流程:特例处理: 当树的根节点为空,则直接返回空列表 [] ;初始化: 打印结果列表 res = [] ,包含根节点的队列 queue

2020-06-03 11:44:55 178

原创 面试题31.栈的压入、弹出序列

题目输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。示例输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1), push(2), push(3), push(4)

2020-06-03 10:57:27 155

原创 面试题30.包含min函数的栈

题目定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。示例MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); --> 返回 -3.minStack.pop();minStack.top(); --> 返回 0.m

2020-06-03 10:21:22 125

原创 面试题29. 顺时针打印矩阵

题目输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]代码打印顺序 “从左向右、从上向下、从右向左、从下向上” 循环,class Solution { public int[] spiralOr

2020-06-02 20:04:58 116

原创 面试题28.对称的二叉树

题目请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3示例输入:root = [1,2,2,3,4,4,3]输出:true输入:root = [1,2,2,

2020-06-02 19:24:58 119

原创 面试题27. 二叉树的镜像

题目请完成一个函数,输入一个二叉树,该函数输出它的镜像。例如输入: 4 / \ 2 7 / \ / \1 3 6 9镜像输出: 4 / \ 7 2 / \ / \9 6 3 1示例输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]代码对于一棵树,如果我们在递归遍历(DFS)的过程中交换根节点的左右子节点,就可以得到这棵树的镜像。 4

2020-06-02 16:15:48 167

原创 面试题25. 合并两个排序的链表

题目输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例输入:1->2->4, 1->3->4输出:1->1->2->3->4->4代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x;

2020-06-02 12:14:50 122

原创 LeetCode14.最长公共前缀

题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例输入: ["flower","flow","flight"]输出: "fl"输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。代码一个显而易见的结论是:在字符串数组里任取两个字符串求得的最长公共前缀,一定是小于等于整个字符串数组的最长公共前缀的。设立一个比较基字符串result,先赋值为字符串数组的第一个字符串,其他的字符串挨个按位与之比较,求

2020-06-01 21:26:21 116

原创 LeetCode13.罗马数字转整数

题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。

2020-06-01 20:32:04 174

原创 LeetCode12.整数转罗马数字

题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。

2020-06-01 16:40:15 78

原创 面试题26.树的子结构

题目输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A: 3 / \ 4 5 / \ 1 2给定的树 B: 4 / 1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。示例输入:A = [1,2,3], B = [3,1]输出:false输入:A = [3,4,5,1,2], B = [4,1]输出:true

2020-06-01 16:03:37 229

原创 LeetCode9.回文数

题目判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例输入: 121输出: true输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。代码最lao的转字符串背向双指针法class Solution { public boolean isPalindrome(in

2020-05-31 18:04:00 69

原创 LeetCode8.字符串转换整数

题目请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为+或者-时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。注意:假如该字符串中的第一个非空格字符不是一个有效

2020-05-31 17:20:09 151

原创 LeetCode7.整数反转

题目给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例输入: 123输出: 321输入: -123输出: -321输入: 120输出: 21思路用%取最后一位,用/取除最后一位前面的,依次取出。再配合边界判断。//pop operation:pop = x % 10;x /= 10;//push operation:temp = rev * 10 + pop;rev = temp;代码class Solution { publi

2020-05-30 21:37:01 77

原创 LeetCode6.Z字形变换

题目将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例输入: s = "LE

2020-05-30 20:49:06 144

原创 LeetCode3.无重复字符的最长子串

题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。思路:子串重复问

2020-05-29 15:55:48 111

原创 面试题25.合并两个排序的链表

题目:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思路:代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { va

2020-05-28 12:41:34 121

原创 LeetCode5.最长回文子串

题目:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。输入: "cbbd"输出: "bb"思路:背向双指针,遍历每一个索引,以这个索引为中心,利用“回文串”中心对称的特点,往两边扩散,看最多能扩散多远。奇数回文串的“中心”是一个具体的字符,例如:回文串 “aba” 的中心是字符 “b”;偶数回文串的“中心”是位于中间的两个字符的“空隙”,例如:回文串串 “

2020-05-28 10:16:16 105

原创 面试题24.反转链表

题目:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL代码:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x

2020-05-27 17:29:31 202

原创 面试题22.链表中倒数第k个节点

题目:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof示例:给定一个链表: 1->2->3->4->5

2020-05-27 11:30:59 229

原创 面试题21.调整数组的顺序使奇数位于偶数前面

题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。思路:这道题思路很简单,用双指针,指针i从数组头出发,指针j从数组尾出发,当i遇到奇数时往后走,遇到偶数停下,当j遇到偶数时往前走,遇到奇数时停下,都停下时交换两个数,直到两指针相遇。注:可以用(nums[i] & 1) == 1)判断是否是奇数,

2020-05-27 09:51:30 219

原创 面试题20.表示数值的字符串

题目描述:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416”、“0123"都表示数值,但"12e”、“1a3.14”、“1.2.3”、“±5”、"-1E-16"及"12e+5.4"都不是。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出

2020-05-25 15:23:11 127

原创 面试题18. 删除链表的节点

题目描述:给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。题目保证链表中节点的值互不相同若使用 C 或 C++ 语言,你不需要 free 或 delete 被删除的节点示例:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 ...

2020-04-21 11:55:15 276

原创 面试题17. 打印从1到最大的n位数

题目描述:输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。示例:输入: n = 1输出: [1,2,3,4,5,6,7,8,9]思路:本题原意是考查大数,但是这里做了简化,限定在了int,所以较为简单,利用pow函数先取得10的n次方,减一就是n位的最大数,然后从1开始依次存入数组即可。代码:impo...

2020-04-21 11:42:48 116

原创 面试题16. 数值的整数次方

题目描述:实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zhi-de-zheng-shu-ci-fang-lcof示例:输入: 2.00000, 10输出: 10...

2020-04-19 17:34:08 80

原创 面试题15. 二进制中1的个数

题目描述:请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。示例:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。输入:0000000...

2020-04-18 22:52:36 107

原创 面试题14.剪绳子1

题目描述:给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m] 。请问 k[0]k[1]…*k[m] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。来源:力扣(LeetCode)链接:https://leetcode-cn...

2020-04-18 11:01:20 159

原创 面试题13. 机器人的运动范围

题目描述:地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人...

2020-04-17 17:49:23 141

原创 面试题12. 矩阵中的路径

题目描述:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。[[“a”,“b”,“c”,“e”],[“s”,“f”,“c”,“s”],[“a...

2020-04-16 21:22:13 162

原创 面试题10.斐波那契数列

题目描述:写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000...

2020-04-16 15:47:53 395

原创 242.有效的字母异位词

题目描述:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例:输入: s = "anagram", t = "nagaram"输出: true输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。来源:力扣(LeetCode)链接:https://leetcode-cn.com/proble...

2020-04-08 21:49:03 104

空空如也

空空如也

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

TA关注的人

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