leetcode
页图
本人学生一枚,旨在于把自己学习积累的问题,经验与大家分享。
展开
-
最小生成树 C++简洁实现
1.普利姆算法时间复杂度#include<iostream>#include<algorithm>#include<vector>using namespace std;int prime(vector<vector<int>>& edge){ int n = edge.size(); vector<bool> visit(n, false); vector<int> dis(原创 2021-04-11 20:56:45 · 513 阅读 · 0 评论 -
算法:螺丝螺母问题
给你一堆螺母和螺帽,每个螺母都有一个相对应的螺帽,但是他们之间的对应关系已经打乱。你可以比较螺母和螺帽的大小关系,但是你无法比较螺母和螺母的大小关系,你也无法比较螺帽和螺帽的大小关系。设计一个算法,找出螺母和螺帽的对应关系。#include<iostream>#include<vector>using namespace std;void quicksort(vector<int>& a, vector<int>& b, int le原创 2021-03-19 16:40:01 · 1887 阅读 · 0 评论 -
剑指 Offer 07. 重建二叉树
剑指 Offer 07. 重建二叉树题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。示例:例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7限制:0 <= 节点个数 <= 5000解题思路:方法一:递归二叉树前序遍历:根、左、右原创 2020-11-29 16:04:03 · 78 阅读 · 0 评论 -
剑指 Offer 06. 从尾到头打印链表
剑指 Offer 06. 从尾到头打印链表题目描述:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000解题思路:正向遍历一遍链表,依次将值存入栈中。遍历完成后,依次弹出栈中的数据元素将其存放入数组中。时间复杂度O(n),空间复杂度O(n)。还可以直接遍历一次链表,将元素依次使用头插法插入到vector数组中,不过由于头插法要移动后面所有的元素,效率不原创 2020-11-28 16:01:40 · 88 阅读 · 0 评论 -
Leetcode 题解 - 排序
参考:https://github.com/CyC2018/CS-Notes快速选择堆1. Kth Element桶排序1. 出现频率最多的 k 个元素2. 按照字符出现次数对字符串排序荷兰国旗问题1. 按颜色进行排序快速选择用于求解 Kth Element 问题,也就是第 K 个元素的问题。可以使用快速排序的 partition() 进行实现。需要先打乱数组,否则最坏情况下时间复杂度为 O(N2)。堆用于求解 TopK Elements原创 2020-11-28 15:44:13 · 113 阅读 · 0 评论 -
Leetcode 题解 - 数组与矩阵
参考:https://github.com/CyC2018/CS-Notes1. 把数组中的 0 移到末尾2. 改变矩阵维度3. 找出数组中最长的连续 14. 有序矩阵查找5. 有序矩阵的 Kth Element6. 一个数组元素在 [1, n] 之间,其中一个数被替换为另一个数,找出重复的数和丢失的数7. 找出数组中重复的数,数组值在 [1, n] 之间8. 数组相邻差值的个数9. 数组的度10. 对角元素相等的矩阵11. 嵌套数组12. 分隔数组1. 把数组中的 0 移原创 2020-11-28 15:39:40 · 176 阅读 · 0 评论 -
Leetcode 题解 - 栈和队列
参考:https://github.com/CyC2018/CS-Notes1. 用栈实现队列2. 用队列实现栈3. 最小值栈4. 用栈实现括号匹配5. 数组中元素与下一个比它大的元素之间的距离6. 循环数组中比当前元素大的下一个元素1. 用栈实现队列232. Implement Queue using Stacks (Easy)Leetcode / 力扣栈的顺序为后进先出,而队列的顺序为先进先出。使用两个栈实现队列,一个元素需要经过两个栈才能出队列,在经过第一个栈时元素顺序被反原创 2020-11-28 15:36:38 · 96 阅读 · 0 评论 -
Leetcode 题解 - 贪心思想
1. 分配饼干2. 不重叠的区间个数3. 投飞镖刺破气球4. 根据身高和序号重组队列5. 买卖股票最大的收益6. 买卖股票的最大收益 II7. 种植花朵8. 判断是否为子序列9. 修改一个数成为非递减数组10. 子数组最大的和11. 分隔字符串使同种字符出现在一起参考:https://github.com/CyC2018/CS-Notes保证每次操作都是局部最优的,并且最后得到的结果是全局最优的。1. 分配饼干455. Assign Cookies (Easy)Leet..原创 2020-11-28 15:33:59 · 172 阅读 · 0 评论 -
Leetcode 题解 - 双指针
1. 有序数组的 Two Sum2. 两数平方和3. 反转字符串中的元音字符4. 回文字符串5. 归并两个有序数组6. 判断链表是否存在环7. 最长子序列参考:https://github.com/CyC2018/CS-Notes双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。1. 有序数组的 Two Sum167. Two Sum II - Input array is sorted (Easy)Leetcode / 力扣Input: numbers={2..原创 2020-11-28 15:29:47 · 281 阅读 · 0 评论 -
Leetcode链表系列
1. 找出两个链表的交点2. 链表反转3. 归并两个有序的链表4. 从有序链表中删除重复节点5. 删除链表的倒数第 n 个节点6. 交换链表中的相邻结点7. 链表求和8. 回文链表9. 分隔链表10. 链表元素按奇偶聚集链表是空节点,或者有一个值和一个指向下一个链表的指针,因此很多链表问题可以用递归来处理。1. 找出两个链表的交点160. Intersection of Two Linked Lists (Easy)Leetcode / 力扣例如以下示例中 A 和 B 两..原创 2020-11-27 20:51:01 · 183 阅读 · 0 评论 -
Leetcode 二分查找系列
1. 求开方2. 大于给定元素的最小元素3. 有序数组的 Single Element4. 第一个错误的版本5. 旋转数组的最小数字6. 查找区间正常实现Input : [1,2,3,4,5]key : 3return the index : 2int binarySearch(vector<int> nums, int key) { int l = 0, h = nums.size() - 1; while (l <= h) { ..原创 2020-11-27 20:45:24 · 127 阅读 · 0 评论 -
剑指 Offer 05. 替换空格
剑指 Offer 05. 替换空格题目描述:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."限制:0 <= s 的长度 <= 10000解题思路:方法一最容易想到的就是从头到尾扫描字符串,每次碰到空格字符的时候进行替换。由于1个字符替换成3个字符,就必须把空格后的所有字符都后移2位。时间复杂度为O(n^2)方法二首先从头到尾扫描空格字符的个数n,将字符串s的空原创 2020-11-27 20:18:24 · 125 阅读 · 0 评论 -
剑指 Offer 04. 二维数组中的查找
剑指 Offer 04. 二维数组中的查找题目描述:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23,原创 2020-11-27 19:38:18 · 144 阅读 · 0 评论 -
剑指offer 3. 找出数组中重复的数字
剑指offer 3. 找出数组中重复的数字题目描述:在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字,如果没有重复的数字则返回-1。示例输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 解题思路:最简单的方法就是将数组排序,然后从头到尾扫描排序后的数组即可。所用的时间复杂度取决于排序算法,一般为O(nlogn),空间复杂度为O(1)。原创 2020-11-27 19:06:45 · 95 阅读 · 0 评论 -
leetcode搜索系列
BFS1. 计算在网格中从原点到特定点的最短路径长度2. 组成整数的最小平方数数量3. 最短单词路径DFS1. 查找最大的连通面积2. 矩阵中的连通分量数目3. 好友关系的连通分量数目4. 填充封闭区域5. 能到达的太平洋和大西洋的区域Backtracking1. 数字键盘组合2. IP 地址划分3. 在矩阵中寻找字符串4. 输出二叉树中所有从根到叶子的路径5. 排列6. 含有相同元素求排列7. 组合8. 组合求和9. 含有相同元素的组合求和10. ..原创 2020-11-16 20:21:06 · 242 阅读 · 0 评论 -
leetcode动态规划系列
斐波那契数列1. 爬楼梯2. 强盗抢劫3. 强盗在环形街区抢劫4. 信件错排5. 母牛生产矩阵路径1. 矩阵的最小路径和2. 矩阵的总路径数数组区间1. 数组区间和2. 数组中等差递增子区间的个数分割整数1. 分割整数的最大乘积2. 按平方数来分割整数3. 分割整数构成字母字符串最长递增子序列1. 最长递增子序列2. 一组整数对能够构成的最长链3. 最长摆动子序列最长公共子序列1. 最长公共子序列0-1 背包1. 划分数组.原创 2020-11-16 20:09:39 · 398 阅读 · 0 评论