🐧 腾讯精选练习 50 题
文章平均质量分 51
腾旭精选题目
爱敲代码的小黄
我是爱敲代码的小黄,阿里淘宝集团的Java开发工程师,CSDN博客专家,阿里云专家博主。写过的专栏:Java设计模式、Spring源码系列、Netty源码系列、Kafka源码系列、JUC源码系列、duubo源码系列,期待和大家一起学习,一起进步,一起对抗互联网寒冬
展开
-
【 腾讯精选练习 50 题】20—合并K个升序链表【困难】
文章目录题目链接题目简介题目解析题目代码题目链接23. 合并K个升序链表题目简介给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 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]将它们合并到一个有序链表中得到。1->1->2->3-&g原创 2021-04-29 21:40:34 · 244 阅读 · 0 评论 -
【 腾讯精选练习 50 题】19—买卖股票的最佳时机 II【简单】
题目链接122. 买卖股票的最佳时机 II【简单】题目简介给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。 随后,原创 2021-04-14 22:57:15 · 194 阅读 · 0 评论 -
【 腾讯精选练习 50 题】18—环形链表【简单】
题目链接141. 环形链表【简单】题目简介给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false题目解析很典型的一道题目,使用 快慢指针 解决假设该链表有环慢原创 2021-04-14 16:11:52 · 155 阅读 · 0 评论 -
【 腾讯精选练习 50 题】17—字符串转换整数 (atoi)【中等】
题目链接8. 字符串转换整数 (atoi)【中等】题目简介函数 myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。将前面步骤读入的这些数字转换为整数(即,“123” -> 123, “0032” -> 32)。如果没有读入数字,则整数为原创 2021-04-14 16:04:26 · 167 阅读 · 0 评论 -
【 腾讯精选练习 50 题】16—三数之和【中等】
题目链接15. 三数之和【中等】题目简介给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ? 请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]题目解析题目要求使用不重复的三原创 2021-04-13 23:03:24 · 126 阅读 · 1 评论 -
【 腾讯精选练习 50 题】15—盛最多水的容器【中等】
题目链接11. 盛最多水的容器【中等】题目简介给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。实例一:输入:[1,8,6,2,5,4,8,3,7]输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部原创 2021-04-12 22:08:46 · 168 阅读 · 0 评论 -
【 腾讯精选练习 50 题】14—合并两个有序数组【简单】
题目链接88. 合并两个有序数组【简单】题目简介给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。示例 1:输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]原创 2021-04-12 21:49:04 · 222 阅读 · 0 评论 -
【 腾讯精选练习 50 题】13—买卖股票的最佳时机【简单】
题目链接121. 买卖股票的最佳时机【简单】题目简介给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。题目解析题目大致意思:前面买的股票,后面卖出,求最大值 简化为 num[i] - (i 之前数组的min)定义两个变量 max = 0,min原创 2021-04-03 00:05:43 · 209 阅读 · 0 评论 -
【 腾讯精选练习 50 题】12—合并两个有序链表【简单】
题目链接21. 合并两个有序链表【简单】题目简介将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:题目解析定义一个辅助链表 ListNode newNode = new ListNode(0);,定义一个指针 p3 = newNode分一下四种情况l1 == null:p3 直接连接 l2 即可l2 == null:p3 直接连接 l1 即可l1.val <= l2,val:p3 直接连接 l1(数值小的) 即可l1.原创 2021-04-02 18:34:00 · 217 阅读 · 0 评论 -
【 腾讯精选练习 50 题】11—最大子序和【简单】
题目链接53. 最大子序和【简单】题目简介给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [0]输出:0题目解析题目意思比较简单,在一个数组中,找子数组最大的我们定义两个变量,sum 代表 元素的总和原创 2021-04-02 17:58:51 · 126 阅读 · 0 评论 -
【 腾讯精选练习 50 题】09—寻找两个正序数组的中位数【困难】
题目链接4. 寻找两个正序数组的中位数【困难】题目简介给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2原创 2021-04-02 17:23:32 · 175 阅读 · 0 评论 -
【 腾讯精选练习 50 题】10—爬楼梯【简单】
题目链接70. 爬楼梯【简单】题目简介假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶题目解析简单的dp即可我们原创 2021-03-31 23:04:14 · 204 阅读 · 0 评论 -
【 腾讯精选练习 50 题】17—字符串转换整数 (atoi)【中等】
文章目录题目链接题目简介题目解析题目代码题目链接8. 字符串转换整数 (atoi)【中等】题目简介请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。函数 myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。读入下一个字符,直到到达下一个非原创 2021-03-12 22:06:09 · 191 阅读 · 0 评论 -
【 腾讯精选练习 50 题】10—买卖股票的最佳时机【简单】
文章目录题目链接题目简介题目解析题目代码题目链接121.买卖股票的最佳时机【简单】题目简介给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。实例一:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第原创 2021-03-08 22:15:19 · 306 阅读 · 0 评论 -
【 腾讯精选练习 50 题】08—最长回文子串【中等】
题目链接5. 最长回文子串【中等】题目简介给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"示例 3:输入:s = "a"输出:"a"示例 4:输入:s = "ac"输出:"a"题目解析题目代码...原创 2021-03-08 22:01:28 · 162 阅读 · 0 评论 -
【 腾讯精选练习 50 题】07—最长公共前缀【简单】
文章目录题目链接题目描述题目解析题目代码题目链接14. 最长公共前缀【简单】题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = ["flower","flow","flight"]输出:"fl"示例 2:输入:strs = ["dog","racecar","car"]输出:""解释:输入不存在公共前缀。题目解析题目给你一个字符串数组,让你求 字符串数组中从开头最长的公共前缀例如:["flower",原创 2021-02-23 00:01:24 · 168 阅读 · 0 评论 -
【 腾讯精选练习 50 题】06—删除排序数组中的重复项【简单】
题目链接26. 删除排序数组中的重复项【简单】题目简介给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2原创 2021-02-22 23:52:41 · 162 阅读 · 0 评论 -
【 腾讯精选练习 50 题】05—回文数【简单】
题目链接9. 回文数【简单】题目描述给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121输出:true示例 2:输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入:x = 10输出:false解释:从右向左读, 为原创 2021-02-22 23:11:38 · 230 阅读 · 0 评论 -
【 腾讯精选练习 50 题】04—整数反转【简单】
文章目录题目链接题目简介题目解析题目代码题目链接7. 整数反转【简单】题目简介给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x = 0输出:0题目原创 2021-02-22 21:15:29 · 165 阅读 · 0 评论 -
【 腾讯精选练习 50 题】03—有效的括号
题目链接有效的括号题目简介给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例一:输入:s = "()"输出:true示例二:输入:s = "([)]"输出:false题目解析用栈来进行辅助,依次将字符 ( { [ 压入栈中当遇到 ) } ] 时,去查看我们的栈顶元素是否为对应的字符若匹配,则直接进行弹出,不匹配,则返回 false注意一下原创 2021-02-17 16:12:17 · 144 阅读 · 0 评论 -
【 腾讯精选练习 50 题】02—两数相加
文章目录题目链接题目简介题目解析题目代码题目链接两数相加题目简介给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807题目解析链表节点的加法运算将 l1的数值 + l2的数值 + 进位的数值% 1原创 2021-02-17 15:46:55 · 188 阅读 · 0 评论 -
【 腾讯精选练习 50 题】01—翻转链表
文章目录题目简介题目解析题目代码题目简介反转一个单链表示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL题目解析常规面试题目,两种方法都要会,迭代、递归对于迭代来说:在遍历链表时,将当前节点的 next 指针改为指向前一个节点对于递归来说:遍历到结尾,然后利用递归完的进行返回即可题目代码public class Study01 { // 递归 public L原创 2021-02-16 23:23:32 · 172 阅读 · 0 评论 -
【字节跳动】跳跃游戏
1. 题目描述建议,,,看懂即可2. 题目分析如果某一个作为起跳点的格子可以跳跃的距离是 3,那么表示后面 3 个格子都可以作为 起跳点。可以对每一个能作为 起跳点 的格子都尝试跳一次,把 能跳到最远的距离 不断更新。如果从这个 起跳点 起跳叫做第 1 次 跳跃,那么从后面 3 个格子起跳 都 可以叫做第2次 跳跃。所以,当一次 跳跃 结束时,从下一个格子开始,到现在 能跳到最远的距离,都 是下一次 跳跃 的 起跳点。对每一次 跳跃 用 for 循环来模拟。跳完一次之后,更新下一次 起跳原创 2020-08-18 20:20:08 · 514 阅读 · 0 评论 -
【bilibilli】翻转字符串
1. 题目描述题目链接:翻转字符串2. 题目分析剑指offer的原题。在剑指offer中,采取的方法是:对字符串进行处理,将首尾的空格去掉,再对整个字符串进行翻转,再翻转每一个小字符串,最后处理多余的空格,返回即可这里我采取的是双指针的做法,比较容易理解和书写。我们先判断异常的字符串:if(s == null || s.length() == 0 || s.trim().length() == 0){ return ""; }我们定义i、j,从字符串的后面开始遍历,当i遇到空格时,我们将i+原创 2020-08-17 18:58:20 · 446 阅读 · 1 评论 -
【bilibili】有效的括号
1. 题目描述LeetCode20:有效括号2. 题目分析题目的意思比较简单,就是一个简单的模拟操作,当为{ ( [ 时直接入栈,当为} ) ]时判断栈顶的字符是不是相对应的字符,不是,直接返回这里有几个坑点,总结一下:不要忘了最后判断栈是否为空、不要忘了null/0、不要忘了当栈为0时,出现} ) ]直接返回false主要的测试样例:"" [ ]做的时候,第一次错了最后栈大小的判断,第二次错了栈空取出来的异常3. 题目代码class Solution { public boo原创 2020-08-14 08:54:42 · 759 阅读 · 0 评论 -
【字符串】最长不含重复字符的子字符串
1. 题目描述2. 题目分析我们可以看到,对于原创 2020-08-12 21:38:31 · 3206 阅读 · 2 评论 -
【数组】两数之和
【2020秋招-面试题目汇总(随时更新)】1. 题目描述2. 题目分析我们首先想到的,是暴力,直接双重循环,这种的耗费时间为O(n^2),也不是面试官想要看到的,我们需要在此方法的基础上对其改进。我们想到了一种数据结构(HashMap),我们知道,对于HashMap而言,它具有(key-value)的一种映射,我们将 target - nums[i] 设置为key,将它的下标i设置为value,这样的话, 当我们在数组中再一次遍历到**target - nums[i]**时,将 value 和当原创 2020-08-11 11:18:55 · 1035 阅读 · 0 评论 -
【 腾讯精选练习 50 题】用队列实现栈
1. 题目描述2. 题目分析有一说一,题目有点沙雕 用两个队列来实现一个栈 栈:先进后出、队列:先进先出 我们用两个队列来模拟栈,一个队列当主栈,一个队列用来辅助,我们在push的时候,将主栈的元素转移到辅助栈中,然后push至主栈,再从辅助栈拿回所有的数据,这样,一个模拟的栈基本构成 pop(),直接应用队列的poll() top(),直接应用队列的peek() empty(),直接应用队列的isEmpty()3. 题目代码public class St...原创 2020-07-29 18:50:13 · 251 阅读 · 0 评论