自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 树的子结构

输入两棵二叉树A和B,判断B是不是A的子结构解决思路:先找到B树的根节点在A树中的位置,然后判断B树的左右子树是不是和在A树中的位置对应的左右子树相同。代码:构造二叉树:class TreeNode { public int val; public TreeNode left, right; public TreeNode(int val) { this.val = val; this.left = this.ri

2020-12-27 20:18:27 95 1

原创 由二叉树的中序和后序遍历,得到前序遍历

直接上解决思路:后序遍历的最后一个值就是根节点的值,然后在中序遍历中找到根节点的值,位于根节点之前的就是左子树,之后的就是右子树。递归解决问题代码:public static void preTraversing(TreeNode head){ if (head==null){ return; } System.out.print(head.val+" "); preTraversing(head.left

2020-12-27 20:10:38 303

原创 由二叉树的前序遍历和中序遍历得到后序遍历

根据前序遍历和中序遍历来重建二叉树,并用后序遍历的方法打印出二叉树的序列先给出二叉树的前序遍历:{1,2,4,7,3,5,6,8}再给出二叉树的中序遍历:{4,7,2,1,5,3,8,6}解决思路: 前序遍历中的第一个值就是二叉树的根节点,然后在中序遍历中找到根节点的位置,根节点之前的就是它的左子树,根节点之后就是它的右子树,然后根据它的左子树和右子树的长度,在前序遍历中确定它们的位置,然后递归的解决问题。话不多说,直接上代码public static v...

2020-12-27 20:02:34 1294

原创 同盾科技 java开发工程师(平台) 校招 二面

时间30min左右 很匆忙,面试官人很好,没有自我介绍,没有项目介绍,直接从数据结构问起1.ArrayList和linkedlist的区别 增删改查的时间复杂度(当场去世)2.图了解吗?图的广度遍历和深度遍历 用什麽实现3.算法 动态规划 贪心的区别 回溯 回溯不是称为万能的吗?为什麽不能代替前两个?4.分治思想5.java的集合体系6.Java集合中线程安全的所有集合7.TCP的四次挥手8.GC GCRoot有哪些 (年轻代GC...

2020-12-11 19:24:21 575

原创 同盾科技 java开发工程师(平台)一面

1.自我介绍2.介绍项目3.追问项目细节4.HTTP协议5.TCP的三次握手6.get和post的区别7.cookie和session8.HashMap和hashtable9.hashMap的底层实现10.hashMap的put操作具体是怎样做的?时间复杂度11.hashMap怎么扩容?11.hashtable为什麽是线程安全的?12.synchronized13.乐观锁和悲观锁14.java内存结构15.java集合 ArrayList和lin.

2020-12-11 18:30:12 476

原创 最长公共子序列

描述给出两个字符串,找到最长公共子序列(LCS),返回LCS的长度。说明最长公共子序列的定义:最长公共子序列问题是在一组序列(通常2个)中找到最长公共子序列(注意:不同于子串,LCS不需要是连续的子串)。该问题是典型的计算机科学问题,是文件差异比较程序的基础,在生物信息学中也有所应用。 https://en.wikipedia.org/wiki/Longest_common_subsequence_problem样例样例 1: 输入: "ABCD" and "EDCA".

2020-12-02 20:13:06 60

原创 交叉字符串

描述给出三个字符串:s1、s2、s3,判断s3是否由s1和s2交叉构成。样例样例 1:输入:"aabcc""dbbca""aadbbcbcac"输出:true样例 2:输入:"""""1"输出:false样例 3:输入:"aabcc""dbbca""aadbbbaccc"输出:false代码实现import java.util.Scanner;public class IsInterleave { publ..

2020-12-02 20:07:18 121

原创 数组剔除元素后的乘积

描述给定一个整数数组A。定义B[i] = A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1], 计算B的时候请不要使用除法。请输出B。样例样例 1输入: A = [1, 2, 3]输出: [6, 3, 2]解析:B[0] = A[1] * A[2] = 6; B[1] = A[0] * A[2] = 3; B[2] = A[0] * A[1] = 2样例 2输入: A = [2, 4, 6]输出: [24, 12, 8]话不.

2020-12-02 20:01:14 99

原创 二叉树的最大节点

描述在二叉树中寻找值最大的节点并返回。样例样例1:输入:{1,-5,3,1,2,-4,-5}输出: 3说明:这棵树如下所示: 1 / \ -5 3 / \ / \1 2 -4 -5样例 2输入:{10,-5,2,0,3,-4,-5}输出: 10说明:这棵树如下所示: 10 / \ -5 2 / \ / \0 3 -4 -5 代码1.创建一个二叉树class

2020-12-02 19:55:01 302

原创 模拟斗地主

要求:模拟斗地主,实现抓牌,洗牌,看牌思路:1.创建一个HashMap集合,用来存储牌,也就好比一个牌盒子 2.创建一个ArrayList集合用来存牌的索引 3.制作牌(一张牌由花色和数字组成) 4.把制作好的牌装入牌盒子 5.洗牌(调用Collections的shuffle函数,即随意置换函数) 注:这里洗索引就可以 6.创建玩家(注:这里我创建的三个玩家是我喜欢的三个港星)和底牌...

2020-06-08 20:20:51 261

原创 17. 子集

给定一个含不同整数的集合,返回其所有的子集。样例样例 1:输入:[0]输出:[ [], [0]]样例 2:输入:[1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]挑战你可以同时用递归与非递归的方式解决么?注意事项子集中的元素排列必须是非降序的,解集必须不包含重复的子集。public class Solution { /** ...

2020-06-04 16:40:56 87

原创 15. 全排列

给定一个数字列表,返回其所有可能的排列。样例样例 1:输入:[1]输出:[ [1]]样例 2:输入:[1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]挑战使用递归和非递归分别解决。注意事项你可以假设没有重复数字。public class Solution { /* * @param nums: A list of integ...

2020-05-28 22:50:21 95

原创 调整数组顺序使奇数位于偶数前面

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。public class Solution { public void reOrderArray(int [] array) { for(int i= 0;i<array.length-1;i++){ for(int j=0;j<array.length-1-i...

2020-05-24 12:04:43 141

原创 数值的整数次方

题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0public class Solution { public double Power(double base, int exponent) { double result=1; if(exponent==0){ result=1; } ...

2020-05-24 12:03:10 66

原创 二进制中1的个数

题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。public class Solution { public int NumberOf1(int n) { int count=0; while(n!=0){ count++; n=n&(n-1); } return count; }}...

2020-05-24 12:01:53 75

原创 变态跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。f(1) = 1f(2) = f(2-1) + f(2-2)//f(2-2) 表示2阶一次跳2阶的次数。f(3) = f(3-1) + f(3-2) + f(3-3)...f(n) = f(n-1) + f(n-2) + f(n-3) + ... + f(n-(n-1)) + f(n-n)说明:1)这里的f(n) 代表的是n个台阶...

2020-05-24 12:00:21 56

原创 从头打印链表

题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/import java.util.ArrayList;public class Solution...

2020-05-24 11:55:11 57

原创 替换空格

题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。public class Solution { public String replaceSpace(StringBuffer str) { StringBuffer s=new StringBuffer(); for(int i=0;i<str.toString().length()...

2020-05-24 11:53:56 54

原创 二维数组中的查找

题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。public class Solution { public boolean Find(int target, int [][] array) { boolean flag=false; int a=array.length; int b=a...

2020-05-24 11:53:02 104

原创 重建二叉树

题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。/*** Definition for binary tree* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* ...

2020-05-24 11:51:48 95

原创 69. 二叉树的层次遍历

给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)样例样例 1:输入:{1,2,3}输出:[[1],[2,3]]解释: 1 / \ 2 3它将被序列化为{1,2,3}层次遍历样例 2:输入:{1,#,2,3}输出:[[1],[2],[3]]解释:1 \ 2 /3它将被序列化为{1,#,2,3}层次遍历挑战挑战1:只使用一个队列去实现它挑战2:用BFS算法来做注意事项首个数据为根节点,后面接着是其左儿子和右儿子

2020-05-17 12:46:19 112

原创 68. 二叉树的后序遍历

给出一棵二叉树,返回其节点值的后序遍历。样例样例 1:输入:{1,2,3}输出:[2,3,1]解释: 1 / \ 2 3它将被序列化为{1,2,3}后序遍历样例 2:输入:{1,#,2,3}输出:[3,2,1]解释: 1 \ 2 /3它将被序列化为{1,#,2,3}后序遍历挑战你能使用非递归实现么?注意事项首个数据为根节点,后面接着是其左儿子和右儿子节点值,"#"表示不存在该子节点。 节点数量不超过20输入测试数据

2020-05-17 12:45:05 91

原创 67. 二叉树的中序遍历

给出一棵二叉树,返回其中序遍历样例样例 1:输入:{1,2,3}输出:[2,1,3]解释: 1 / \ 2 3它将被序列化为{1,2,3}中序遍历样例 2:输入:{1,#,2,3}输出:[1,3,2]解释:1 \ 2 /3它将被序列化为{1,#,2,3}中序遍历挑战你能使用非递归算法来实现么?输入测试数据(每行一个参数)如何理解测试数据?/*** Definition of TreeNode:* publ...

2020-05-17 12:42:47 160

原创 66. 二叉树的前序遍历

给出一棵二叉树,返回其节点值的前序遍历。样例样例 1:输入:{1,2,3}输出:[1,2,3]解释: 1 / \ 2 3它将被序列化为{1,2,3}前序遍历样例 2:输入:{1,#,2,3}输出:[1,2,3]解释:1 \ 2 /3它将被序列化为{1,#,2,3}前序遍历挑战你能使用非递归实现么?注意事项首个数据为根节点,后面接着是其左儿子和右儿子节点值,"#"表示不存在该子节点。 节点数量不超过20/**..

2020-05-17 12:41:13 123

原创 93. 平衡二叉树

给定一个二叉树,确定它是高度平衡的。对于这个问题,一棵高度平衡的二叉树的定义是:一棵二叉树中每个节点的两个子树的深度相差不会超过1。样例样例 1: 输入: tree = {1,2,3} 输出: true 样例解释: 如下,是一个平衡的二叉树。 1 / \ 2 3 样例 2: 输入: tree = {3,9,20,#,#,15,7} 输出: true 样例解释: 如下,是一个平衡的二叉树。 3 .

2020-05-16 15:50:35 85

原创 85. 在二叉查找树中插入节点

给定一棵二叉查找树和一个新的树节点,将节点插入到树中。你需要保证该树仍然是一棵二叉查找树。样例样例 1: 输入: tree = {}, node= 1 输出: {1} 样例解释: 在空树中插入一个点,应该插入为根节点。 样例 2: 输入: tree = {2,1,4,3}, node = 6 输出: {2,1,4,3,6} 样例解释: 如下: 2 2 / \ / \ 1 4 -->

2020-05-16 15:10:43 159

原创 80. 中位数

给定一个未排序的整数数组,找到其中位数。中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第N/2个数。样例样例 1:输入:[4, 5, 1, 2, 3]输出:3解释:经过排序,得到数组[1,2,3,4,5],中间数字为3样例 2:输入:[7, 9, 4, 5]输出:5解释:经过排序,得到数组[4,5,7,9],第二个(4/2)数字为5挑战时间复杂度为O(n)注意事项数组大小不超过10000public class S.

2020-05-13 15:59:34 178

原创 454. 矩阵面积

实现一个矩阵类Rectangle,包含如下的一些成员变量与函数:两个共有的成员变量width和height分别代表宽度和高度。 一个构造函数,接受2个参数 width 和 height 来设定矩阵的宽度和高度。 一个成员函数getArea,返回这个矩阵的面积。样例样例1:Java: Rectangle rec = new Rectangle(3, 4); rec.getArea(); // should get 12,3*4=12Python: ...

2020-05-13 13:24:39 108

原创 366. 斐波纳契数列

查找斐波纳契数列中第 N 个数。所谓的斐波纳契数列是指:前2个数是 0 和 1 。 第i个数是第i-1 个数和第i-2 个数的和。斐波纳契数列的前10个数字是:0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...样例样例 1: 输入: 1 输出: 0 样例解释: 返回斐波那契的第一个数字,是0.样例 2: 输入: 2 输出: 1 样例解释: 返回斐波那契的第二个数字是1.注意事项在测试数据中第N个斐波那契...

2020-05-13 13:21:57 47

原创 53. 翻转字符串中的单词

给定一个字符串,逐个翻转字符串中的每个单词。样例样例 1: 输入: "the sky is blue" 输出: "blue is sky the" 样例解释: 返回逐字反转的字符串.样例 2: 输入: "hello world" 输出: "world hello" 样例解释: 返回逐字反转的字符串.说明单词的构成:无空格字母构成一个单词,有些单词末尾会带有标点符号 输入字符串是否包括前导或者尾随空格?可以包括,但是反转后的字符不能包括.

2020-05-13 13:17:51 133

原创 39. 恢复旋转排序数组

给定一个旋转排序数组,在原地恢复其排序。(升序)样例Example1:[4, 5, 1, 2, 3]->[1, 2, 3, 4, 5]Example2:[6,8,9,1,2]->[1,2,6,8,9]挑战使用O(1)的额外空间和O(n)时间复杂度说明什么是旋转数组?比如,原始数组为[1,2,3,4], 则其旋转数组可以是[1,2,3,4], [2,3,4,1], [3,4,1,2], [4,1,2,3] public class Solution...

2020-05-13 13:15:10 134

原创 14. 二分查找

给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。样例样例 1: 输入:[1,4,4,5,7,7,8,9,9,10],1 输出: 0 样例解释: 第一次出现在第0个位置。样例 2: 输入: [1, 2, 3, 3, 4, 5, 10],3 输出: 2 样例解释: 第一次出现在第2个位置 样例 3: 输入: [1, 2, 3, 3, 4,

2020-05-13 13:12:42 157

原创 56.两数之和

给一个整数数组,找到两个数使得他们的和等于一个给定的数target。你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 0 到n-1。样例Example1:给出 numbers = [2, 7, 11, 15], target = 9, 返回 [0, 1].Example2:给出 numbers = [15, 2, 7, 11], target = 9, 返回 [1, 2].挑战给自己加点挑战O(n)O(n)...

2020-05-13 13:09:18 126

原创 主元素

给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。样例样例 1:输入: [1, 1, 1, 1, 2, 2, 2]输出: 1样例 2:输入: [1, 1, 1, 2, 2, 2, 2]输出: 2挑战要求时间复杂度为O(n),空间复杂度为O(1)注意事项你可以假设数组非空,且数组中总是存在主元素。解决办法一:public class Solution { /* * @param nums: a...

2020-05-09 12:25:13 162

原创 最大子数组

给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。样例样例1:输入:[−2,2,−3,4,−1,2,1,−5,3]输出:6解释:符合要求的子数组为[4,−1,2,1],其最大和为 6。样例2:输入:[1,2,3,4]输出:10解释:符合要求的子数组为[1,2,3,4],其最大和为 10。挑战要求时间复杂度为O(n)注意事项子数组最少包含一个数解决方法1:public class Solution { /** * @par...

2020-05-08 19:06:18 185

空空如也

空空如也

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

TA关注的人

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