0%

面试题-算法-LeetCode-腾讯精选练习50题

注: 以下题目都是根据 LeetCode App上的顺序,按照由易到难排列

237、删除链表中的节点

编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,函数将只会传给你要被删除的节点(坑在这里,注意:传给你的不是head节点和要删除的值,而是直接传给你要删除的那个节点)。

点击看答案

仅仅只是删除而已,简直是脑筋急转弯,被坑进去了

自己写的时候的问题:没啥,主要是审题

LeetCode

344、反转字符串

点击看答案

首尾双指针

自己写的时候的问题:尴尬,忘了 i++,j– 了

LeetCode

7、整数反转

点击看答案

每次反转一个数字,注意防止溢出(可以考虑result使用long类型)

自己写的时候的问题:要注意负数的最小值,和整数最大值一样处理

LeetCode

9、回文数,判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。你能不将整数转为字符串来解决这个问题吗?

点击看答案反转后一半数字

自己写的时候的问题:*通过不断除以10,搞清楚这个值到底是什么数量级,比如99,那 div 就是10级,比如 999,那 div 就是 100级,然后通过 n/div 就能得到第一位, n%10,得到最后一位,比较他们的值。依次往复 *

LeetCode

14、(还未做)最长公共前缀

点击看答案

直接看链接,这个不大会

LeetCode

88、合并两个有序数组nums1和nums2,将nums2合并到nums1中,使nums1成为一个有序数组(假设nums有足够空间)。

点击看答案

从后往前,注意 nums1 中剩余的元素

自己写的时候的问题:没问题,从尾到头合并即可

LeetCode

20、有效的括号:给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效(即括号的开闭符合规则)。

点击看答案

使用HashMap 建立映射关系,Stack 用于遍历

自己写的时候的问题:记住 Stack 的 isEmpty() 、pop 、push 方法即可

LeetCode

21、合并两个有序链表,将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的(假设链表元素顺序由小到大)

点击看答案

双指针,注意其中一个链表到表尾时,另一个链表整个接上去

LeetCode

292、Nim 游戏,桌上一堆石头,两人轮流拿1~3块石头,拿到最后一块石头的人获胜。现在给n块石头,你先拿,判定你是否能赢得游戏。你们是聪明人,每一步都是最优解。

点击看答案

当 n%4 != 0 时,就可以赢

LeetCode

26、删除排序数组中的重复项,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。你不需要考虑数组中超出新长度后面的元素。

点击看答案

后一个元素与当前重复,则直到不重复的元素,移过来,覆盖重复元素。

LeetCode

53、最大子序和

点击看答案

前面的和是否是正数,是正数就有增益

LeetCode

70、爬楼梯,需要爬n阶才能到楼顶,每次可以爬1阶或者2阶,有多少种方法爬到楼顶?

点击看答案

斐波那契数列

LeetCode

104、二叉树的最大深度

点击看答案

记住递归方法,好用的递归的方法

LeetCode

121、买卖股票的最佳时机,给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。

点击看答案

遍历,记录当前最小的值,以及之后相对应的最大利润

LeetCode

122、买卖股票的最佳时机 II,给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票,注意你不能在买入股票前卖出股票)

点击看答案

简单的一次遍历,相邻依次减下去

LeetCode

136、只出现一次的数字,一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素

点击看答案

所有元素异或

LeetCode

141、环形链表,给定一个链表,判断链表中是否有环

点击看答案

快慢指针,并且快指针每次走两步,慢指针每次走一步

LeetCode

557、反转字符串中的单词 III

输入: “Let’s take LeetCode contest”
输出: “s’teL ekat edoCteeL tsetnoc”

点击看答案

使用辅助栈

LeetCode

155、最小栈,设计一个支持push、pop、top操作,并且能在常数时间内检索到最小元素的栈

点击看答案

两个栈,一个正常存放元素,一个不同步存放小元素

LeetCode

160、相交链表,编写一个程序,找到两个单链表相交的起始节点

点击看答案

两个指针分别遍历两个链表,到尾结点后切换到另一个链表的头结点,两个指针相交的地方就是第一个相交的节点

LeetCode

169、多数元素,给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素

点击看答案

排序,中间那个元素就是

LeetCode

206、反转链表

点击看答案

pre节点和current 节点

LeetCode

217、存在重复元素,给定一个整数数组,判断是否存在重复元素。

点击看答案

HashSet

LeetCode

231、2的幂,给定一个整数,编写一个函数来判断它是否是 2 的幂次方。

点击看答案

二进制数据中只有1个1

LeetCode

二叉搜索树的最近公共祖先,给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。

点击看答案

直接看链接

LeetCode

谢谢你的鼓励