面试刷题
麦田里的守望者_zhg
如果有人碰到别人在穿越麦田,我一定会抓住他...
展开
-
牛客网刷题闭坑 【关于域名和IP的描述正确的是?】
1 题目A:一个域名可以对应多个IP,某一时刻一个域名只能对应一个IPB:一个IP可以对应多个域名C:域名通过DNS转换成IP地址进行访问D:类似C原创 2020-10-18 10:31:26 · 1039 阅读 · 0 评论 -
牛客网刷题闭坑 【SQL中哪些字段字段适合建立索引】
1 题目1、表的主键、外键必须有索引;2、数据量超过300的表应该有索引;3、经常与其他表进行连接的表,在连接字段上应该建立索引;4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;5、索引应该建在选择性高的字段上;6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:8、频繁进行数据操作的表,不要建立太多的索引;9、删除无用的索引,避免对执行计划造成负面影响;A、正确选择复合索引中的主原创 2020-10-18 10:33:48 · 749 阅读 · 0 评论 -
LeetCode刷题之 【剑指 Offer 54. 二叉搜索树的第 k 大节点】
1 题目给定一棵二叉搜索树,请找出其中第k大的节点。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \1 4 \ 2输出: 4示例2:输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \原创 2020-11-24 16:24:50 · 204 阅读 · 0 评论 -
LeetCode刷题之 【剑指 Offer 28. 对称的二叉树】
1 题目请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。例如,二叉树 [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示例 1:输入:root = [1,2,2,3,4,4,3]输出:true示例 2:输入:root = [1,2,2,null,3,null,3原创 2020-11-24 15:53:24 · 203 阅读 · 0 评论 -
LeetCode刷题之 【剑指 Offer 19. 正则表达式匹配】
1 题目请实现一个函数用来匹配包含’. ‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但与"aa.a"和"ab*a"均不匹配。示例 1:输入:s = “aa”p = “a”输出: false解释: “a” 无法匹配 “aa” 整个字符串。示例 2:输入:s = “aa”p = “a*”输出: true解释: 因为 ‘原创 2020-11-23 19:27:49 · 227 阅读 · 0 评论 -
LeetCode刷题之 【下一个排列】
1 题目实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/next-permutation著作权归领扣网络所有。商原创 2020-11-10 21:19:59 · 181 阅读 · 0 评论 -
LeetCode、牛客刷题之int类型越界导致答案错误
1 注意题目:[编程题]逆序对距离之和当在刷题或者做题时,发现代码都是对的,但是就是不能100%通过,如下:经过两个小时的排错,终于发现了问题在哪里,直接看代码:这是有问题的代码:import java.util.Scanner;public class Main{ private static int sum = 0; public static void main(String []argv){ Scanner sc = new Scanner(Syste原创 2020-11-01 22:03:58 · 690 阅读 · 0 评论 -
Leetcode刷题之 【215. 数组中的第K个最大元素】
1 题目在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/kth-largest-element原创 2020-10-22 18:47:57 · 409 阅读 · 0 评论 -
面试题之 【根据二叉树的度求节点个数】
1 度首先说说什么是度:通俗的讲二叉树中连接节点和节点的线就是度,有n个节点,就有n-1个度,节点数总是比度要多一个,那么度为0的节点一定是叶子节点,因为该节点的下面不再有线;度为1的节点即:该节点只有一个分支;同理度为2的节点就是有两个分支。在二叉树中不可能存在度为3或大于3的节点!关于度和节点之间的关系还有很多公式:度为0的节点数为度为2的节点数加1,即n0=n2+1这个公式的推理方法如下:设:k:总度数k+1:总节点数n0:度为0的节点n1:度为1的节点n2:度为二的节点根据二叉树原创 2020-10-20 09:21:43 · 3012 阅读 · 0 评论 -
Leetcode刷题之 【N皇后问题】
1 题目n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例:输入:4输出:[[".Q…", // 解法 1“…Q”,“Q…”,“…Q.”],["…Q.", // 解法 2“Q…”,“…Q”,“.Q…”]]解释: 4 皇后问题存原创 2020-10-19 21:46:02 · 808 阅读 · 0 评论 -
面试之 【查找算法】
1 顺序查找就是简单的从左往右或者从右往左遍历,待查找的数组并不需要有序,查到返回true,否则返回false。时间复杂度:最优时间复杂度是O(1),需要查找的元素就是第一个或者是最后一个最差时间复杂度是O(n),待查找的在查找顺序的最优一个位置平均时间复杂度是O(n)。public class SequenseSearch { public boolean search(int[]nums,int target){ if (nums.length==0)原创 2020-10-19 20:13:41 · 245 阅读 · 0 评论 -
牛客网刷题闭坑 【printf打印】
printf函数执行的时候,会先把这三个数字压入栈里,然后再执行打印。压入栈的时候按照数据本身的长度来,首先把c和b压入,并且每一个都是8个字节(printf自动转化为double)。然后再压入a是4个字节。然后再执行打印。打印的时候按照用户指定的格式来出栈。首先打印a,a打印正常。然后又打印4个字节长度的b,在栈里面由于b长度是八个字节,并且b目前是64位的表示方式,数据的后面全是0.(float 变double),电脑是小端存储方式,0存储在距离a近的地方。打印b的时候,打印的4个字节都是0.然后再打.原创 2020-10-18 10:44:42 · 539 阅读 · 0 评论 -
牛客网刷题闭坑 【虚拟存储的容量受到下列哪一个因素的限制影响最大?】
1 题目虚拟内存的大小=min(2^计算机位数,内存+外存)原创 2020-10-18 10:28:39 · 2462 阅读 · 0 评论 -
牛客网刷题闭坑 【表的主键特点中,说法不正确的是?】
1 题目有争议的答案是D和C,C: 一张表只能有一个主键,一个主键可以包含多个字段。D: 主键约束可以定义在表级或列级,主键不能原创 2020-10-18 10:13:09 · 692 阅读 · 0 评论 -
面试题之 【单例模式的几种实现】
1 双重加锁单利模式是设计模式中最基础的设计模式之一,且也是唯一能够使用几十行代码就能够写出来的一种设计模式,所以也是面试中经常问到的题目。单利模式的实现比较简单,如果想要达到高效且线程安全那也是需要点技巧的。public class Person { private Person(){} private static volatile Person person; public static Person getInstance(){ if (per原创 2020-10-14 16:24:03 · 229 阅读 · 0 评论 -
Leetcode刷题之 【寻找重复数】
1 题目给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时间复杂度小于 O(n2) 。数组中只有一个重复的数字,但它可能不止重复出现一次。来源:力扣(LeetCode)链接:原创 2020-10-12 20:11:31 · 352 阅读 · 0 评论 -
面试题之 【01背包问题】
1 题目一个背包的总容量为V,现在有N类物品,第i类物品的重量为weight[i],价值为value[i]。那么往该背包里装东西,怎样装才能使得最终包内物品的总价值最大。2 解题思路本题目的解题思路类似金矿问题,放到背包里面的物体要么整个放进去,要么就不放。那么根据动态规划的思路就有下一下两种情况:放进背包:此时将物体i放进背包,那么所剩物体减少1个,背包所能继续装物体的重量为V-weight[i],背包总价值加上物体i的价值。不放:此时不放到背包中,所剩物体减少1个,背包所能继续装物体原创 2020-10-12 17:04:43 · 601 阅读 · 0 评论 -
面试题之 【挖金矿问题】
1 题目有一个国家发现了5座金矿,每座金矿的黄金储量不同,需要参与挖掘的工人数也不同。参与挖矿工人的总数是10人。每座金矿要么全挖,要么不挖,不能派出一半人挖取一半金矿。要求用程序求解出,要想得到尽可能多的黄金,应该选择挖取哪几座金矿?2 思路此问题是一道经典的动态规划(Dynamic programming)问题,简称DP问题,动态规划问题求解的三要素有一下三点:全局最优解最优子结构问题的边界对该金矿问题(假设共有n个金矿,共有w个工人,金矿的含金量数组为g,每个金矿所需开采工人的数组为原创 2020-10-10 12:00:57 · 1548 阅读 · 0 评论 -
面试题之 【删除k个数字后的最小值】
1 题目给出一个整数,从该整数中删除k个数,要求在删去k个数之后,新的整数要尽可能的小,编写一个这样的函数,传入一个正整数和待删除的个数k(k的大小小于等于正整数的长度)。举例:input: n = 3459, k =1output: 359input: n= 1593212, k = 3output: 1212input: n=12345, k= 2output: 123input: n = 41270936, k = 2output: 1209362 思路一下子删去k个数,想原创 2020-10-09 15:54:03 · 1120 阅读 · 0 评论 -
面试题之 【寻找全排列的下一个数】
1 题目给出一个正整数,找出这个正整数所有数字全排列的下一个数。比如:12345->1235412543->1254312354->1243512435->124532 思路可分成三种情况进行分析,当数字组合已经是逆序排列时,比如:54321,已经是所有数字组合中的最大值,直接返回原数。当数字组合的倒数两位是顺序排列时,比如:12345、13245、14523,直接将最后两位交换位置即可。即12345->12354、13245->13254原创 2020-10-09 14:17:32 · 584 阅读 · 0 评论 -
桶排序应用之 【计算无序数组有序之后的最大相邻元素差】
1 题目编写一个函数,传入一格无序的数组,返回无序数组排序之后的最大相邻元素的差。举例:输入:[5, 7, 2, 9, 10, 20, 44, 39]输出:192 思路1(暴力破解)先使用一种时间复杂度为O(logn)的排序算法将无序数组排好序然后在依次求相邻元素的差,并保存最大的差值。这种方法肯定能解决该问题,但是这样做的算法时间复杂度太高,接近O(n*n)。public int bruteForce(int []nums){ int distance = 0;原创 2020-10-07 20:32:27 · 308 阅读 · 0 评论 -
Leetcode刷题之 【剑指 Offer 59 - II. 队列的最大值】
1 题目请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1示例 1:输入:[“MaxQueue”,“push_back”,“push_back”,“max_value”,“pop_front”,“max_value”][[],[1],[2],[],[],[]]输出: [null,null,null,2,1,原创 2020-10-07 17:31:02 · 225 阅读 · 0 评论 -
LeetCode刷题之 【面试题 02.08. 环路检测】
1 题目给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点。有环链表的定义:在链表中某个节点的next元素指向在它前面出现过的节点,则表明该链表存在环路。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:tail connects to node index 0解释:链表中有一个环原创 2020-10-06 21:13:18 · 222 阅读 · 0 评论 -
数据结构之鸡尾酒排序
1 鸡尾酒排序当冒泡排序的基础上,鸡尾酒排序进一步对其进行了优化,由于冒泡排序会对一些已经排好序的数列进行比较,浪费了很多比较次数,所以鸡尾酒排序:当第一轮从左到右排序确定了一个最大(最小)值之后,然后就从右向左进行比较往回走,在从右向左比较完之后,数列中的最小(最大)值被浮到最前面的位置。2 代码实现import java.util.Arrays;public class CockTailSort { public void cockTailSort(int[] arrayLike) {原创 2020-10-04 20:44:13 · 259 阅读 · 0 评论 -
数据结构之冒泡排序及其优化
1 冒泡排序顾名思义,冒泡就是像水中的泡泡一样,一步一步将需要排序的数列中的最大值或者最小值浮到最上面来。2 代码实现public void bubbleSort(int[] arrayLike) { int n = arrayLike.length; for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (arrayLike[j] &g原创 2020-10-04 19:47:14 · 199 阅读 · 0 评论 -
Leetcode刷题之 【最近的请求次数】
1 题目写一个 RecentCounter 类来计算特定时间范围内最近的请求。请你实现 RecentCounter 类:RecentCounter() 初始化计数器,请求数为 0 。int ping(int t) 在时间 t 添加一个新请求,其中 t 表示以毫秒为单位的某个时间,并返回过去 3000 毫秒内发生的所有请求数(包括新请求)。确切地说,返回在 [t-3000, t] 内发生的请求数。保证每次对 ping 的调用都使用比之前更大的 t 值。示例 1:输入: [“RecentCoun原创 2020-10-03 21:58:57 · 330 阅读 · 0 评论 -
数据结构之单调队列的实现
1 什么是单调队列顾名思义,单调队列原则上也是一种队列,只不过在队列的基础上,有一些额外的功能是基本的队列所没有的。比如说每次出队的元素都比上一次的元素大或者小,这就是一种单调队列。2 Java代码实现import java.util.LinkedList;import java.util.Queue;/** * 单调队列 */public class MonoQueue { private boolean up = true; private Queue<Integ原创 2020-10-03 19:46:30 · 647 阅读 · 0 评论 -
Leetcode刷题之 【剑指 Offer 59 - I. 滑动窗口的最大值】
1 题目给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释:滑动窗口的位置 最大值--------------- -----[1 3 -1] -3 5 3 6 7原创 2020-10-03 18:58:14 · 114 阅读 · 0 评论 -
Leetcode刷题之 【设计循环队列】
1 题目设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。你的实现应该支持如下操作:MyCircularQueue(k): 构造器,设置队列长度为 k 。Front: 从队首获取元素。如果队列为空,返原创 2020-10-03 18:54:10 · 464 阅读 · 0 评论 -
Leetcode刷题之 【杨辉三角】
1 题目给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/pascals-triangle著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2 Java代码 //链表实现原创 2020-09-28 21:27:20 · 111 阅读 · 0 评论 -
Leetcode刷题之 【买卖股票的最佳时机】
1 题目给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。示例 2:原创 2020-09-28 20:14:00 · 138 阅读 · 0 评论 -
Leetcode刷题之 【二叉树的最小深度】
1 题目给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-depth-of-binary-原创 2020-09-28 19:21:21 · 321 阅读 · 0 评论 -
Leetcode刷题之 【删除排序链表中的重复元素】
1 题目给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2 J原创 2020-09-28 18:58:43 · 295 阅读 · 0 评论 -
Leetcode刷题之 【相同的树】
1 题目给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \原创 2020-09-20 09:59:56 · 93 阅读 · 0 评论 -
Leetcode刷题之 【对称二叉树】
1 题目给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [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进阶:你可以运用递归和迭代两种方法解决这个问题吗?来源:力扣(LeetCode)链接:https:原创 2020-09-19 10:50:08 · 276 阅读 · 0 评论 -
Leetcode刷题之 【二叉树的层次遍历 II】
1 题目给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[[15,7],[9,20],[3]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-level-or原创 2020-09-19 10:09:02 · 187 阅读 · 0 评论 -
Leetcode刷题之 【搜索插入位置】
1 题目给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems原创 2020-09-19 09:51:24 · 162 阅读 · 1 评论 -
Leetcode刷题之【外观数列】
1 题目给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。注意:整数序列中的每一项将表示为一个字符串。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:111211211111221第一项是数字 1描述前一项,这个数是 1 即 “一个 1 ”,记作 11描述前一项,这个数是 11 即 “两个 1 ” ,记作 21描述前一项,这个数是 21 即 “一个 2 一个 1 ” ,记作 1211原创 2020-09-19 09:46:19 · 250 阅读 · 0 评论 -
Leetcode刷题之 【最后一个单词的长度】
1 题目给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0 。说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。示例:输入: “Hello World”输出: 5来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/length-of-last-word著作权归领扣网络所有。商业转载请联系官方授原创 2020-09-19 09:40:28 · 135 阅读 · 0 评论 -
Leetcode刷题之 【二叉树的最大深度】
1 题目给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree著作权归领扣网络所有原创 2020-09-19 09:38:15 · 175 阅读 · 0 评论