基础不牢靠,怎么进大厂?这些Java基础题建议收藏哦!

前言年年寒冬,也挡不住一个Java程序员追求大厂的决心,现在的大厂面试,尤其是一面与二面都涉及到很深的Java基础知识,所以小编总结了一些大厂常问的Java基础面试题和答案 ,分享给大家,希望大家能早日进入自己理想的公司~~1. JDK 和 JRE 有什么区别?JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。JRE:Java Runtime Environment 的简称,java 运行环境,为 java 的运行提供了所需环
分类: 其他 发布时间: 10-28 22:24 阅读次数: 0

【LeetCode】236. 二叉树的最近公共祖先

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出: 3解释: 节点 5 和节点 1
分类: 其他 发布时间: 10-28 22:16 阅读次数: 0

【LeetCode】169. 多数元素

一、题目给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2二、题目1、暴力思路:代码:时间复杂度: O(n2n^2n2)空间复杂度: O(n)2、Map思路:代码:时间复杂度: O(n)空间复杂度: O(n)3、摩尔投票法思路:代码:时间
分类: 其他 发布时间: 10-28 22:16 阅读次数: 0

【LeetCode】438. 找到字符串中所有字母异位词

一、题目给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引。字符串只包含小写英文字母,并且字符串 s 和 p 的长度都不超过 20100。说明:字母异位词指字母相同,但排列不同的字符串。不考虑答案输出的顺序。示例 1:输入:s: "cbaebabacd" p: "abc"输出:[0, 6]解释:起始索引等于 0 的子串是 "cba", 它是 "abc" 的字母异位词。起始索引等于 6 的子串是 "bac", 它是 "
分类: 其他 发布时间: 10-28 22:16 阅读次数: 0

【LeetCode】122. 买卖股票的最佳时机 II

一、题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。 随后,在第 4 天(股票价格 = 3)的时候买入,在第 5
分类: 其他 发布时间: 10-28 22:16 阅读次数: 0

【LeetCode】455. 分发饼干

一、题目假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。注意:你可以假设胃口值为正。一个小朋友最多只能拥有一块饼干。示例 1:输入: [1,2,3], [1,1]输出: 1解释:
分类: 其他 发布时间: 10-28 22:16 阅读次数: 0

【LeetCode】102. 二叉树的层序遍历

一、题目给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]二、题目三、参考1、Java solution with a queue used2、Java 1ms DFS recursive solution and 2ms B
分类: 其他 发布时间: 10-28 22:16 阅读次数: 0

【LeetCode】51. N 皇后

一、题目n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。 每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例:输入:4输出:[ [".Q..", // 解法 1 "...Q", "Q...", "..Q."], ["..Q.", // 解法 2 "Q...", "...
分类: 其他 发布时间: 10-28 22:16 阅读次数: 0

【LeetCode】52. N皇后 II

一、题目n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回 n 皇后不同的解决方案的数量。示例:输入: 4输出: 2解释: 4 皇后问题存在如下两个不同的解法。[ [".Q..", // 解法 1 "...Q", "Q...", "..Q."], ["..Q.", // 解法 2 "Q...", "...Q", ".Q.."]]提示:皇后,是国际象
分类: 其他 发布时间: 10-28 22:16 阅读次数: 0

【LeetCode】37. 解数独

一、题目编写一个程序,通过已填充的空格来解决数独问题。一个数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。空白格用 ‘.’ 表示。一个数独。答案被标成红色。Note:给定的数独序列只包含数字 1-9 和字符 ‘.’ 。你可以假设给定的数独只有唯一解。给定数独永远是 9x9 形式的。二、解决1、思路:代码:时间复杂度: O(1)O(1)O(1)空间复杂度:
分类: 其他 发布时间: 10-28 22:16 阅读次数: 0

【LeetCode】208. 实现 Trie (前缀树)

一、题目实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。示例:Trie trie = new Trie();trie.insert("apple");trie.search("apple"); // 返回 truetrie.search("app"); // 返回 falsetrie.startsWith("app"); // 返回 truetrie.insert("app"); trie.search("app
分类: 其他 发布时间: 10-28 22:16 阅读次数: 0

【LeetCode】212. 单词搜索 II

一、题目给定一个二维网格 board 和一个字典中的单词列表 words,找出所有同时在二维网格和字典中出现的单词。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。示例:输入: words = ["oath","pea","eat","rain"] and board =[ ['o','a','a','n'], ['e','t','a','e'], ['i','h','k','r
分类: 其他 发布时间: 10-28 22:16 阅读次数: 0

【LeetCode】338. 比特位计数

一、题目给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例 2:输入: 5输出: [0,1,1,2,1,2]进阶:给出时间复杂度为 O(n*sizeof(integer)) 的解答非常容易。但你可以在线性时间O(n)内用一趟扫描做到吗?要求算法的空间复杂度为O(n)。你能进一步完善解法吗?要求在C++或任何其他语言中不使用任何内置函数(如 C++ 中的
分类: 其他 发布时间: 10-28 22:15 阅读次数: 0

【LeetCode】123. 买卖股票的最佳时机 III

一、题目给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获得利润 = 3-0 = 3 。随后,在第 7 天(股票价格 = 1)的时候买入,在第 8 天 (股票价格 =
分类: 其他 发布时间: 10-28 22:15 阅读次数: 0

【LeetCode】152. 乘积最大子数组

一、题目给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。二、参考1、递归思路:[[2],[3,4],[6,5,7],[4,1,8,3]]分析下可得:(i, j)点的相邻节点为:(i+1,
分类: 其他 发布时间: 10-28 22:15 阅读次数: 0

【LeetCode】188. 买卖股票的最佳时机 IV

一、题目给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [2,4,1], k = 2输出: 2解释: 在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能获得利润 = 4-2 = 2 。示例 2:输入: [3,2,6,5,0,3], k = 2输出: 7解
分类: 其他 发布时间: 10-28 22:15 阅读次数: 0

【LeetCode】300. 最长上升子序列

一、题目给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗?二、解决三、参考1、最长上升子序列2、Java/Python Binary search O(nlogn) t
分类: 其他 发布时间: 10-28 22:15 阅读次数: 0

【面试】排序算法小结

一、具体1、比较排序1.1 初级排序(O(n2)O(n^2)O(n2))1、冒泡: 嵌套循环,每次查看相邻元素,如果逆序,则交换。public void bubbleSort(int[] array) { int len = array.length; for (int i=len-1; i>=0; i--) { int flag = 0; for (int j=0; j<i; i++) { if (array[i]>array[j]) { int te
分类: 其他 发布时间: 10-28 22:15 阅读次数: 0

【LeetCode】233. 数字 1 的个数(同剑指Offer43)

一、题目给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。示例:输入: 13输出: 6解释: 数字 1 出现在以下数字中: 1, 10, 11, 12, 13 。三、参考1、数字 1 的个数2、4+ lines, O(log n), C++/Java/Python...
分类: 其他 发布时间: 10-28 22:15 阅读次数: 0

【LeetCode】10. 正则表达式匹配(同剑指Offer19)

一、题目给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。示例 1:输入:s = "aa"p = "a"输出: false解释: "a" 无法匹配 "aa" 整个字符串。示例 2:输入:s
分类: 其他 发布时间: 10-28 22:15 阅读次数: 0