LeetCode
Susceptible0506
这个作者很懒,什么都没留下…
展开
-
前缀和加Hash表解LeetCode 974&560
题目:974. 和可被 K 整除的子数组给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。示例:输入:A = [4,5,0,-2,-3,1], K = 5输出:7解释:有 7 个子数组满足其元素之和可被 K = 5 整除:[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]思路:遇到区间题,我首先想到的就是区间DP,区间DP的复杂度是O(n^2原创 2020-05-27 15:24:14 · 323 阅读 · 0 评论 -
二分搜索解LeetCode 287寻找重复数
287. 寻找重复数给定一个包含n+ 1 个整数的数组nums,其数字都在 1 到n之间(包括 1 和n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。 只能使用额外的O(1) 的空间。 时间复杂度小于O(n2) 。 数组中只有一个重复的数字,但它可能不止重复出现一次。+思路:...原创 2020-05-26 15:10:14 · 187 阅读 · 0 评论 -
图论 LeetCode面试题04.01 && 1334
面试题 04.01. 节点间通路节点间通路。给定有向图,设计一个算法,找出两个节点之间是否存在一条路径。示例1: 输入:n = 3, graph = [[0, 1], [0, 2], [1, 2], [1, 2]], start = 0, target = 2 输出:true示例2: 输入:n = 5, graph = [[0, 1], [0, 2], [0, 4], [0, 4], [0, 1], [1, 3], [1, 4], [1, 3], [2, 3], [3, 4]],原创 2020-05-25 10:51:57 · 217 阅读 · 0 评论 -
并查集 LeetCode 547
LeetCode547. 朋友圈班上有N名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B的朋友,B 是 C的朋友,那么我们可以认为 A 也是 C的朋友。所谓的朋友圈,是指所有朋友的集合。给定一个N * N的矩阵M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输出所有学生中的已知的朋友圈总数。示例 1:输入: [[1,1,0], [1,1,0], [0,0...原创 2020-05-21 19:24:54 · 175 阅读 · 0 评论 -
栈的使用 LeetCode 20&150
LeetCode20. 有效的括号给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "([)]"输出: false示例 2:输入: "{[]}"输出: true思路将左括号推入栈中,当遇到右括号时,查看是否与栈顶元素匹配,不匹配返回false,匹配将栈顶元素出栈。注意:匹配时要注意判断栈中是.原创 2020-05-21 09:59:21 · 152 阅读 · 0 评论 -
贪心 LeetCode 455&435
LeetCode 455. 分发饼干题目假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。注意:你可以假设胃口值为正。一个小朋友最多只能拥有一块饼干。示例 1:输入: [1,2,3],原创 2020-05-20 16:20:03 · 134 阅读 · 0 评论 -
回溯法 LeetCode 17&93&131&46&77&39&79&200&130&51
树形问题LeetCode 17. 电话号码的字母组合给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].思路:遍历头一个数字可能对应的所有字符,选取一个字符,递归遍历剩下数字可能的选取的字符组合代码:class Solution {priv..原创 2020-05-14 10:55:03 · 226 阅读 · 0 评论 -
二叉树与递归 LeetCode 104&111&226&100&101&222&110&112&404&257&113&129&437&235&98
思路:一棵二叉树的最高深度是等于其左子树和右子树的最高深度的最大值+1代码:classSolution{public:intmaxDepth(TreeNode*root){if(root==NULL){return0;}intlDepth=maxDe...原创 2020-05-06 16:57:11 · 209 阅读 · 0 评论 -
链表问题 LeetCode 206&92&203&24&237&19&2
206 反转链表思路:/** 反转一个单链表。 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL */ struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), nex...原创 2020-04-15 16:28:08 · 109 阅读 · 0 评论 -
查找表2 LeetCode 1&454&49&219
思路:遍历整个数组,将前面的数据放入查找表中,查找当前遍历的元素v和查找表中的元素是否有解,没有解的话,将v也放入查找表,继续遍历/** 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]*/ class Solution {public: v...原创 2020-04-14 22:40:47 · 77 阅读 · 0 评论 -
查找表1 LeetCode 349&350&242&202&290&205&451
#include <iostream>#include <vector>#include <set>using namespace std;/** 给定两个数组,编写一个函数来计算它们的交集。 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2]*/ class Solution {public:...原创 2020-04-12 19:37:05 · 152 阅读 · 0 评论 -
滑动窗口思想解LeetCode 209&3&438&76&1248
209思路,如果nums[i..j]<s,往前多加一位直到将长度记录下来从i这端缩小连续子数组直到sum<s,j又可以继续往前加保持一个窗口[i,j],这个窗口不停的向前滑动,找到满足题意的连续子数组#include <iostream>#include<vector>using na...原创 2020-04-11 15:29:19 · 138 阅读 · 0 评论 -
对撞指针思想解LeetCode 167&125&344&345&11&15
167思想:找到的两个数一定是一左一右的。Nums[i]+nums[j]<target:i++Nums[i]+nums[j]>target:j--直到nums[i]+nums[j]=targetclass Solution {public: vector<int> twoSum(vector<int>& numb...原创 2020-04-05 15:17:22 · 532 阅读 · 0 评论 -
LeetCode 75&88&215
75颜色分类 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序 使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 输入: [2,0,2,1,1,0] 输出: [0,0,1,1,2,2]思路:利用三路快排的思想class Solution {public: void sortColors(vector&l...原创 2020-03-31 22:59:50 · 148 阅读 · 0 评论 -
LeetCode 283Move Zeros以及衍生题目
283 移动0给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。输入: [0,1,0,3,12]输出: [1,3,12,0,0]思路:将非0元素移到前面class Solution {public: void moveZeroes(vector<int>& nums) { int k=0; /...原创 2020-03-31 18:07:51 · 127 阅读 · 0 评论