LeetCode面试题集锦
LeetCode面试题目集锦
刘小小小小刘
https://liuziqiao.github.io/
展开
-
507.完美数
题目描述对于一个 正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为“完美数”。给定一个 正整数 n, 如果他是完美数,返回 True,否则返回 False示例:输入: 28输出: True解释: 28 = 1 + 2 + 4 + 7 + 14解决方案class Solution {public: bool checkPerfectNumber(int nu...原创 2019-03-20 20:28:39 · 271 阅读 · 0 评论 -
字符串替换
问题实现一个简单的字符串替换函数。原串中需要替换的占位符为"%s",请按照参数列表的顺序一一替换占位符。若参数列表的字符数大于占位符个数。则将剩下的参数字符添加到字符串的结尾。给定一个字符串A,同时给定它的长度n及参数字符数组arg,请返回替换后的字符串。保证参数个数大于等于占位符个数。保证原串由大小写英文字母组成,同时长度小于等于500。测试样例:"A%sC%sE",7,['B...原创 2018-12-02 20:14:08 · 372 阅读 · 0 评论 -
微信红包
问题春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。给定一个红包的金额数组gifts及它的大小n,请返回所求红包的金额。若没有金额超过总数的一半,返回0。测试样例:[1,2,3,2,2],5返回:2解决方案方法一:C++中学过...原创 2018-12-02 20:08:46 · 286 阅读 · 0 评论 -
MySqrt
问题实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2输入: 8输出: 2说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。解决方案通过二分法来确定取值区间int mySq...原创 2018-09-16 09:44:03 · 1663 阅读 · 0 评论 -
反转整数
问题给定一个 32 位有符号整数,将整数中的数字进行反转。示例 1:输入: 123输出: 321 示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。解决Java解决方案安照正常...原创 2018-09-14 17:33:28 · 234 阅读 · 0 评论 -
旋转数组的最小数字
问题描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解决方案咋眼一看这题,很简单啊,就一次遍历找到最小值就可以了啊,那答案就很简单。如下给出一般解决方案...原创 2018-12-08 13:38:01 · 125 阅读 · 0 评论 -
重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。/** * Definition for binary tree * struct TreeNode { * int val; * Tre...原创 2019-02-07 23:37:33 · 104 阅读 · 0 评论 -
二叉搜索树的第k个结点
题目描述:给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : ...原创 2019-01-24 23:01:48 · 110 阅读 · 0 评论 -
滑动窗口的最大值
问题描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5};针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个:{[2,3,4],2,6,2,5,1},{2,[3,4,2],6,2,5,1},{2,3, [4,2,6],2,5,1...原创 2018-12-10 23:01:57 · 133 阅读 · 0 评论 -
顺时针打印矩阵
题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.解决方法class Solution {public: vector<int> prin...原创 2019-02-09 22:17:31 · 88 阅读 · 0 评论 -
树的子结构
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class...原创 2019-02-07 23:41:08 · 116 阅读 · 0 评论 -
删除链表中重复的结点
题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5解决方案/*struct ListNode { int val; struct ListNode *next; ListNode(int x...原创 2019-02-21 22:12:19 · 86 阅读 · 0 评论 -
数组中出现次数超过一半的数字
题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。解决方案class Solution {public: int MoreThanHalfNum_Solution(vector<int> numbers) {...原创 2019-02-20 18:23:12 · 102 阅读 · 0 评论 -
包含min函数的栈
题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。解决方案class Solution {public: void push(int x) { s1.push(x); if(s2.empty() || x <= s2.top()) { ...原创 2019-02-20 18:21:28 · 73 阅读 · 0 评论 -
最小的K个数
题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。解决方案利用优先级队列很好的解决该问题,知道优先级队列的伙伴理解起来就非常简单啦。class Solution {public: vector<int> GetLeastNumbers_Solution(vector<int> inp...原创 2019-02-20 18:19:23 · 104 阅读 · 0 评论 -
23.合并 k 个排序链表
题目描述合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6解决方案我们采用二分法与迭代法来解决该问题,每次讲两个链表合并成一个链表后,将得到的新链表继续进行与下一个...原创 2019-02-25 17:29:45 · 159 阅读 · 0 评论 -
21.合并两个有序链表
题目描述将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解决方案/** * Definition for singly-linked list. * struct ListNode { * i...原创 2019-02-25 17:28:42 · 95 阅读 · 0 评论 -
19.删除链表的倒数第N个节点
题目描述给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.解决方案思路:用两个指针,第一个指针先走n步,第二个指针再开始和第一个指针一起走,当第一个指针走到末尾的时候,第二个指针刚好走到要删除的节点的...原创 2019-02-24 22:44:16 · 116 阅读 · 0 评论 -
2.两数相加
题目描述给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -...原创 2019-02-24 21:53:20 · 150 阅读 · 0 评论 -
155.最小栈
题目描述设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) -- 将元素 x 推入栈中。pop() -- 删除栈顶的元素。top() -- 获取栈顶元素。getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.pus...原创 2019-02-20 18:17:45 · 253 阅读 · 0 评论 -
101.对称二叉树
题目描述给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [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解决方案方法一:递归如果一个树的左...原创 2019-02-18 23:01:50 · 151 阅读 · 0 评论 -
752.打开转盘数
题目描述你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’ 。每个拨轮可以自由旋转:例如把 ‘9’ 变为 ‘0’,‘0’ 变为 ‘9’ 。每次旋转都只能旋转一个拨轮的一位数字。锁的初始数字为 ‘0000’ ,一个代表四个拨轮的数字的字符串。列表 deadends 包含了一组死亡数字,一...原创 2019-02-15 22:50:13 · 237 阅读 · 0 评论 -
279.完全平方数
题目描述给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例 1:输入: n = 12输出: 3解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.解决方案思路一是考察四平方和定理,to be honest, 这是我第一次听说...原创 2019-02-14 13:59:48 · 2791 阅读 · 0 评论 -
199.二叉树的右视图
题目描述给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释: 1 <--- / \2 3 <--- \ \ 5 4 <---解决方案思路:与之前...原创 2019-02-13 17:02:34 · 118 阅读 · 0 评论 -
20.有效的括号
题目描述给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:1.左括号必须用相同类型的右括号闭合。2.左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false...原创 2019-02-13 16:16:04 · 90 阅读 · 0 评论 -
42.Trapping Rain Water(接雨水 ①)
题目描述给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6方法一class Soluti...原创 2019-02-12 23:38:54 · 222 阅读 · 0 评论 -
15.threeSum
问题Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.Note:The solution set must not ...原创 2018-09-27 07:56:22 · 303 阅读 · 0 评论 -
最大获利
问题给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 ...原创 2018-09-12 12:07:18 · 274 阅读 · 0 评论 -
80.RemoveDuplicates II
问题Follow up for "Remove Duplicates": What if duplicates are allowed at most twice?For example, Given sorted array nums = [1,1,1,2,2,3],Your function should return length = 5, with the first fiv...原创 2018-09-18 16:57:38 · 265 阅读 · 0 评论 -
26.RemoveDuplicates I
问题Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.Do not allocate extra space for another array, you must do this in place w...原创 2018-09-18 16:57:06 · 244 阅读 · 0 评论