leetcode
才大难为用
我不懒
展开
-
leetcode 0. 综述
就算是一个很小的题,它里面蕴含的知识肯定也少不了,多挖掘,而不是尽早过。原创 2020-06-13 11:37:52 · 125 阅读 · 0 评论 -
leetcode 2.大整数的加减乘除
大整数的加减乘除 主要有两类,一种是数组,一种是链表。原创 2020-06-05 07:20:59 · 742 阅读 · 0 评论 -
leetcode 205.同构字符串
给定两个字符串s和t,判断它们是否是同构的。如果s中的字符可以被替换得到t,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。示例 1:输入: s = "egg", t = "add"输出: true示例 2:输入: s = "foo", t = "bar"输出: false示...原创 2020-02-12 16:33:16 · 104 阅读 · 0 评论 -
leetcode 226.翻转二叉树
翻转一棵二叉树。示例:输入: 4 / \ 2 7/ \ / \1 3 6 9输出: 4 / \ 7 2/ \ / \9 6 3 1备注:之所以这么大张旗鼓做这么简单的题,那是因为这道题是我第100个题啦!做完后我就做中等题了。classSolution{public:Tr...原创 2020-02-03 11:09:24 · 105 阅读 · 0 评论 -
leetcode 219.存在重复元素
给定一个整数数组和一个整数k,判断数组中是否存在两个不同的索引i和j,使得nums [i] = nums [j],并且 i 和 j的差的绝对值最大为 k。示例1:输入: nums = [1,2,3,1], k = 3输出: true示例 2:输入: nums = [1,0,1,1], k = 1输出: true示例 3:输入: nums = [1,2,3,1,2,3]...原创 2020-01-31 15:24:10 · 121 阅读 · 0 评论 -
leetcode 217.存在重复元素
给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true做法1,暴力法,用On^2的时间做法2,排序法,至少用...原创 2020-01-30 13:59:42 · 137 阅读 · 0 评论 -
leetcode 204. 计数质数
统计所有小于非负整数n的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。对于质数的问题,就是用筛法有效率,但是筛法是无上限的,多难的筛法都有,节省的效率只有那么一点点。注意1不是质数,也不是合数,0也不是,实际上,不考虑0,做质数题的诀窍是把n给开根号。...原创 2020-01-30 13:50:29 · 108 阅读 · 0 评论 -
leetcode 47.全排列 II
给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]查找一下就行了吧?class Solution { vector<vector<int> > res; bool *flag; int n; bool is_repe...原创 2019-12-29 18:41:44 · 107 阅读 · 0 评论 -
leetcode 34.在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是O(log n) 级别。如果数组中不存在目标值,返回[-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例2:输入: nums = [5,7,7,8,8,10], targ...原创 2019-12-29 18:09:21 · 112 阅读 · 0 评论 -
leetcode 46.全排列
给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]简单class Solution { vector<vector<int> > res; bool *flag; ...原创 2019-12-29 17:47:31 · 88 阅读 · 0 评论 -
leetcode 989.数组形式的整数加法
对于非负整数X而言,X的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果X = 1231,那么其数组形式为[1,2,3,1]。给定非负整数 X 的数组形式A,返回整数X+K的数组形式。示例 1:输入:A = [1,2,0,0], K = 34输出:[1,2,3,4]解释:1200 + 34 = 1234示例 2:输入:A = [2,7,4], K = 18...原创 2019-12-28 18:17:35 · 179 阅读 · 0 评论 -
leetcode 415.字符串相加
#define MAX 10000class MyInt{private: int _n; int *_arr;public: MyInt(); MyInt(string s); // 支持从字符串创建 friend MyInt operator+(MyInt const &mi1, MyInt const &a...原创 2019-12-28 18:05:34 · 116 阅读 · 0 评论 -
leetcode 40.组合总和 II
给定一个数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例1:输入: candidates =[10,1,2,7,6,1,5], target =8,所求解集为:[...原创 2019-12-28 16:16:09 · 201 阅读 · 0 评论 -
leetcode 36.有效的数独
判断一个9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字1-9在每一行只能出现一次。数字1-9在每一列只能出现一次。数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用'.'表示。示例1:输入:[ ["5","3",".",".","7",".","....原创 2019-12-28 15:06:32 · 91 阅读 · 0 评论 -
leetcode 33.搜索旋转排列数组
假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7]可能变为[4,5,6,7,0,1,2])。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回-1。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是O(logn) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], targ...原创 2019-12-28 14:16:12 · 121 阅读 · 0 评论 -
leetcode 39.组合总数
给定一个无重复元素的数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的数字可以无限制重复被选取。说明:所有数字(包括target)都是正整数。解集不能包含重复的组合。示例1:输入: candidates = [2,3,6,7], target = 7,所求解集为:[ ...原创 2019-12-27 21:17:28 · 186 阅读 · 0 评论 -
leetcode 24.两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.这个交换链表怎么做呢?每次移动两个链表,进行拆解重组,就是这样。递归最好,但是我没用,链表就是递归最好了。#include <iostream&...原创 2019-12-27 19:43:40 · 91 阅读 · 0 评论 -
leetcode 19.删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n保证是有效的。进阶:你能尝试使用一趟扫描实现吗?太简单了,双指针法class Solution {public: ...原创 2019-12-27 19:13:38 · 107 阅读 · 0 评论 -
leetcode 18.四数之和
给定一个包含n 个整数的数组nums和一个目标值target,判断nums中是否存在四个元素 a,b,c和 d,使得a + b + c + d的值与target相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[...原创 2019-12-27 18:57:29 · 136 阅读 · 0 评论 -
leetcode 17.电话号码的字母组合
给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。这个就是排列树吧。。。class...原创 2019-12-27 18:27:44 · 103 阅读 · 0 评论 -
leetcode 16.最接近的三数之和
给定一个包括n 个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).最接近的话,怎么着也得遍历了吧?除了暴力法我也...原创 2019-12-27 17:39:30 · 91 阅读 · 0 评论 -
leetcode 15.三数之和
给定一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]找出三数之和,emmmm,这个...原创 2019-12-27 17:30:21 · 123 阅读 · 0 评论 -
leetcode 12.正数转罗马数字
罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列的 1。12...原创 2019-12-27 16:28:27 · 231 阅读 · 0 评论 -
leetcode 11.盛水最多的容器
给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且n的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝...原创 2019-12-27 16:06:16 · 100 阅读 · 0 评论 -
leetcode 1291.顺序数
class Solution {public: int getNum(int a, int n){ int res=0; for(int i=0; i<n; i++){ if(a+i >= 10) return 0; res *= 10; res += a+i; ...原创 2019-12-17 20:24:07 · 212 阅读 · 0 评论 -
leetcode 172.阶乘后的零
给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释:3! = 6, 尾数中没有零。示例2:输入: 5输出: 1解释:5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为O(logn)。这个算法的复杂性太严格了,而且它的算法只能通过学习取得。更偏向于对问题的归纳: int count = 0; ...原创 2019-12-07 14:57:48 · 100 阅读 · 0 评论 -
leetcode 168.Excel表列名称
给定一个正整数,返回它在 Excel 表中相对应的列名称。例如, 1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 -> AB ...示例 1:输入: 1输出: "A"示例2:输入: 28输出: "AB"示例3:输入: 701输出: ...原创 2019-12-05 13:11:32 · 108 阅读 · 0 评论 -
leetcode N皇后 II
n皇后问题研究的是如何将 n个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回 n 皇后不同的解决方案的数量。示例:输入: 4输出: 2解释: 4 皇后问题存在如下两个不同的解法。[[".Q..", // 解法 1"...Q","Q...","..Q."],["..Q.", // 解...原创 2019-12-04 15:50:56 · 135 阅读 · 0 评论 -
leetcode 51.N皇后
n皇后问题研究的是如何将 n个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的n皇后问题的解决方案。每一种解法包含一个明确的n 皇后问题的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。示例:输入: 4输出: [[".Q..", // 解法 1 "...Q", "Q....原创 2019-12-03 19:32:55 · 94 阅读 · 0 评论 -
leetcode 155.最小栈
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x)-- 将元素 x 推入栈中。pop()-- 删除栈顶的元素。top()-- 获取栈顶元素。getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);...原创 2019-11-26 15:37:12 · 81 阅读 · 0 评论 -
leetcode 141.环形链表
给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例2:输入:head = [1,2], pos = 0输出:true...原创 2019-11-26 12:32:34 · 67 阅读 · 0 评论 -
leetcode 136.只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4只有线性复杂度,一般来说,这种题用哈希表,但是,这个要求这么少,肯定可以的。异或有交换律定理,相当于将相同的数字先异...原创 2019-11-25 14:35:19 · 87 阅读 · 0 评论 -
leetcode 125.验证回文串
验证回文串很简单啦,关键是它有一个样例:"''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''...原创 2019-11-25 13:22:02 · 72 阅读 · 0 评论 -
leetcode 119.杨辉三角II
给定一个非负索引k,其中 k≤33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 3输出: [1,3,3,1]进阶:你可以优化你的算法到 O(k) 空间复杂度吗?要优化到O(K)的水平,那就是找到它的一个公式呗。杨辉三角的第 k 行等价于,二项式 (x + y)^k 的系数。...原创 2019-11-24 14:40:27 · 287 阅读 · 0 评论 -
leetcode 118.杨辉三角
给定一个非负整数numRows,生成杨辉三角的前numRows行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1],[1,4,6,4,1]]想不出啥更有新意的做法,普通做法的复杂度并不大。class Solution {public: vec...原创 2019-11-24 13:03:50 · 80 阅读 · 0 评论 -
leetcode 112.路径总和
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 ...原创 2019-11-24 12:50:28 · 80 阅读 · 0 评论 -
leetcode 111.二叉树的最小深度
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.怎么做呢?当然是全部遍历一遍,弄一个全局最小变量,然后发送出去就可以了。这样做不行,是最小...原创 2019-11-23 15:23:19 · 70 阅读 · 0 评论 -
leetcode 110.平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4] ...原创 2019-11-23 15:04:19 · 90 阅读 · 0 评论 -
leetcode 784.字母大小写全排列
给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。示例:输入: S = "a1b2"输出: ["a1b2", "a1B2", "A1b2", "A1B2"]输入: S = "3z4"输出: ["3z4", "3Z4"]输入: S = "12345"输出: ["12345"]注意:S的长度不超过12。S仅由数字和...原创 2019-11-22 17:04:15 · 125 阅读 · 0 评论 -
leetcode 944.删列造序
给定由N个小写字母字符串组成的数组 A,其中每个字符串长度相等。删除 操作的定义是:选出一组要删掉的列,删去A 中对应列中的所有字符,形式上,第 n列为[A[0][n], A[1][n], ..., A[A.length-1][n]])。比如,有A = ["abcdef", "uvwxyz"],要删掉的列为{0, 2, 3},删除后 A为["bef", "vyz"], A的...原创 2019-11-22 13:24:40 · 98 阅读 · 0 评论