08 2020 档案

摘要:给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:lists = [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:链表数组如下: [ 1->4->5, 1->3->4, 2->6 ] 阅读全文
posted @ 2020-08-30 15:59 王余阳 阅读(369) 评论(0) 推荐(0)
摘要:给定两个字符串 s 和 t,判断它们是否是同构的。 如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。 示例 1: 输入: s = "egg", t = "add" 输 阅读全文
posted @ 2020-08-27 10:32 王余阳 阅读(614) 评论(0) 推荐(0)
摘要:给定一个 没有重复 数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 1 public void backtrack(int n, 2 ArrayList<I 阅读全文
posted @ 2020-08-26 10:35 王余阳 阅读(214) 评论(0) 推荐(0)
摘要:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例: 输入:n = 3 输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ] 深度优先遍历我们以 n = 2 为例,画树形结构图。方法是 “做减 阅读全文
posted @ 2020-08-25 17:24 王余阳 阅读(280) 评论(0) 推荐(0)
摘要:给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: "()" 输出: true 示例 2: 输入: "()[]{} 阅读全文
posted @ 2020-08-25 16:49 王余阳 阅读(150) 评论(0) 推荐(0)
摘要:给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回 true 示例 2: 给定二叉树 [ 阅读全文
posted @ 2020-08-20 15:19 王余阳 阅读(124) 评论(0) 推荐(0)
摘要:给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1: 输入: 1->2->3->3->4->4->5 输出: 1->2->5 示例 2: 输入: 1->1->1->2->3 输出: 2->3 1 public ListNode deleteDuplica 阅读全文
posted @ 2020-08-20 14:56 王余阳 阅读(236) 评论(0) 推荐(0)
摘要:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示例: 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的三元组 阅读全文
posted @ 2020-08-20 12:23 王余阳 阅读(163) 评论(0) 推荐(0)
摘要:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0 阅读全文
posted @ 2020-08-20 09:33 王余阳 阅读(122) 评论(0) 推荐(0)
摘要:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树: 5 / \ 2 6 / \ 1 3 示例 1: 输入: [1,6,3,2,5] 输出: false 示例 2: 输入: [1 阅读全文
posted @ 2020-08-17 15:27 王余阳 阅读(171) 评论(0) 推荐(0)
摘要:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 例如, [2,3,4] 的中位数是 3 [2,3] 的中位数是 (2 + 3) / 2 = 2.5 设计一个支持 阅读全文
posted @ 2020-08-17 14:35 王余阳 阅读(129) 评论(0) 推荐(0)
摘要:堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。 堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子 阅读全文
posted @ 2020-08-17 11:54 王余阳 阅读(177) 评论(0) 推荐(0)
摘要:1 public static void sort(int[] array) { 2 if ((array == null || array.length == 0)) { 3 return; 4 } 5 quickSort(array, 0, array.length - 1); 6 } 7 8 阅读全文
posted @ 2020-08-15 14:12 王余阳 阅读(130) 评论(0) 推荐(0)
摘要:请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。 示例 1: 输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]] 阅读全文
posted @ 2020-08-15 11:59 王余阳 阅读(153) 评论(0) 推荐(0)
摘要:给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 示例 1: 输入: head = [4,5,1,9], val = 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9 阅读全文
posted @ 2020-08-15 11:24 王余阳 阅读(129) 评论(0) 推荐(0)
摘要:输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。 示例 : 输入: n = 1 输出: [1,2,3,4,5,6,7,8,9] 1 public int[] printNumbers(int n) { 2 int max 阅读全文
posted @ 2020-08-15 10:26 王余阳 阅读(202) 评论(0) 推荐(0)
摘要:请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 阅读全文
posted @ 2020-08-13 16:18 王余阳 阅读(154) 评论(0) 推荐(0)
摘要:地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+ 阅读全文
posted @ 2020-08-13 15:24 王余阳 阅读(154) 评论(0) 推荐(0)
摘要:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出) 阅读全文
posted @ 2020-08-13 14:27 王余阳 阅读(246) 评论(0) 推荐(0)
摘要:输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。 例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。 示例 1: 输入:n = 12 输出:5 示例 2: 输入:n = 13 输出:6 解法: 1 public int countDigitO 阅读全文
posted @ 2020-08-12 11:45 王余阳 阅读(292) 评论(0) 推荐(0)
摘要:从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回: [3,9,20,15,7] 解法:https://leetcode-cn.com/problems/cong- 阅读全文
posted @ 2020-08-11 17:44 王余阳 阅读(165) 评论(0) 推荐(0)
摘要:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。 示例 1 阅读全文
posted @ 2020-08-11 16:41 王余阳 阅读(381) 评论(0) 推荐(0)
摘要:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。 示例: 1 MinStack minStack = new MinStack(); 2 minStack.push(-2); 3 minStack.p 阅读全文
posted @ 2020-08-11 15:53 王余阳 阅读(219) 评论(0) 推荐(0)
摘要:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 示例 2: 输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12] 阅读全文
posted @ 2020-08-11 15:14 王余阳 阅读(225) 评论(0) 推荐(0)
摘要:请完成一个函数,输入一个二叉树,该函数输出它的镜像。 例如输入: 4 / \ 2 7 / \ / \1 3 6 9镜像输出: 4 / \ 7 2 / \ / \9 6 3 1 示例 1: 输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 1 /*二叉树的镜像* 阅读全文
posted @ 2020-08-11 12:51 王余阳 阅读(73) 评论(0) 推荐(0)
摘要:创建JWT 1 /** 2 * 创建jwt 3 * @param id 4 * @param subject 5 * @param ttlMillis 过期的时间长度 6 * @return 7 * @throws Exception 8 */ 9 public String createJWT(S 阅读全文
posted @ 2020-08-10 14:19 王余阳 阅读(341) 评论(0) 推荐(0)
摘要:输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值。 例如:给定的树 A: 3 / \ 4 5 / \ 1 2给定的树 B: 4 / 1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。 示例 1 阅读全文
posted @ 2020-08-07 14:49 王余阳 阅读(182) 评论(0) 推荐(0)
摘要:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 1 /*合并两个排序的链表*/ 2 public ListNode mergeTwoLists(ListNode l1, ListNo 阅读全文
posted @ 2020-08-07 14:16 王余阳 阅读(82) 评论(0) 推荐(0)
摘要:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 解法: 1、定义两个指针: prepre 和 curcur ;prepre 在前 curcur 在后。2、每次让 prep 阅读全文
posted @ 2020-08-07 11:38 王余阳 阅读(178) 评论(0) 推荐(0)
摘要:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。 示例: 给定一个链表: 1->2->3->4->5, 和 k = 阅读全文
posted @ 2020-08-07 10:56 王余阳 阅读(150) 评论(0) 推荐(0)
摘要:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 示例: 输入:nums = [1,2,3,4] 输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。 解法: 二,双指针实现我们可以使用两个指针left和right 阅读全文
posted @ 2020-08-07 10:35 王余阳 阅读(166) 评论(0) 推荐(0)
摘要:实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。 示例 1: 输入: 2.00000, 10 输出: 1024.00000 示例 2: 输入: 2.10000, 3 输出: 9.2610 阅读全文
posted @ 2020-08-07 09:40 王余阳 阅读(124) 评论(0) 推荐(0)
摘要:JSON Web Token (JWT):是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。 组成 JWT由三个部分组成:header.payload.signature header部分: 阅读全文
posted @ 2020-08-06 19:15 王余阳 阅读(224) 评论(0) 推荐(0)
摘要:输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。 解法:如果一个整数不为0,那么这个整数至少有一位是1。如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,原来在1后面的所有的0都会变成1(如果最右边的1后面还有0的话)。其余所有位将不会受到影响。举个例子:一个二进制 阅读全文
posted @ 2020-08-05 19:56 王余阳 阅读(122) 评论(0) 推荐(0)
摘要:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 比如n=3时,2*3的矩形块有3种覆盖方法: 结论: f[n] = f[n-1] + f[n-2] 1 /*矩形覆盖*/ 2 public int RectCover(i 阅读全文
posted @ 2020-08-05 19:23 王余阳 阅读(89) 评论(0) 推荐(0)
摘要:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解法: f(n)=f(n-1)+f(n-2)+……f(1) f(n-1)=f(n-2)+……f(1) 两式相减得f(n)=2f(n-1) 1 /*变态跳台阶*/ 2 public int 阅读全文
posted @ 2020-08-05 19:04 王余阳 阅读(124) 评论(0) 推荐(0)
摘要:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 解法:先判断当前节点是否存在右子树,如果存在右子树,就对右子树一直寻找最左结点,直到找到最左的一个结点。 当不存在右子树,就判断是否存在父亲结点,如果不存在父亲结点 阅读全文
posted @ 2020-08-02 14:30 王余阳 阅读(130) 评论(0) 推荐(0)
摘要:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 1 /*二维数组查找*/ 2 public boolean findNumberIn2DArray(int 阅读全文
posted @ 2020-08-01 12:05 王余阳 阅读(120) 评论(0) 推荐(0)
摘要:在一个长度为n的数组里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但是不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 例如,如果 输入长度为7,的数组{2,3,1,0,2,5,3}, 输出是重复的数组2或者3。 代码解析:此部分用到了数组下标对应相 阅读全文
posted @ 2020-08-01 10:48 王余阳 阅读(391) 评论(0) 推荐(0)