Leetcode刷题
1
jun_luo_yu
C++ FPGA RISCV
展开
-
leetcode刷题心得记录
1.unordered_set 无序集合在leetcode575 分糖果中可以使用,加快解题速度class Solution {public: int distributeCandies(vector<int>& candyType) { //哈希数组 unordered_set<int> sums; for(auto i:candyType) { sums.insert(原创 2021-03-02 23:09:03 · 261 阅读 · 0 评论 -
leetcode1047 删除字符串中的所有相邻重复项
每日一题 2021.3.9 久违的简单题目给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:“abbaca” 输出:“ca” 解释: 例如,在 “abbaca” 中,我们可以删除 “bb”由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 “aaca”,其中又只有 “aa”可以执行重复项删除操作,所以最后的字原创 2021-03-09 21:03:28 · 160 阅读 · 0 评论 -
leetcode131/132 分割回文串/分割回文串 II
每日一题2021.3.7给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。回文串 是正着读和反着读都一样的字符串。示例 1:输入:s = “aab” 输出:[[“a”,“a”,“b”],[“aa”,“b”]] 示例 2:输入:s = “a” 输出:[[“a”]](1)回溯+动态规划首先可以先用O(n^2)的时间直接将s中的所有回文串判断出来,这里用到动态规划的思想。 f.assign(n,vector<int>(n,tru原创 2021-03-07 22:03:33 · 162 阅读 · 0 评论 -
leetcode 496/503 下一个更大元素 I/下一个更大元素 II
每日一题2021.3.6(1)leetcode 496给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。请你找出 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1。示例 1:输入: nums1 = [4,1,2], nums2 = [1,3,4,2]. 输出: [-1,3,-1] 解释:对于原创 2021-03-06 20:39:03 · 184 阅读 · 0 评论 -
leetcode232 用栈实现队列
每日一题 2021.3.5请你仅使用两个栈实现先入先出队列。队列应当支持一般队列的支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素 int peek()返回队列开头的元素 boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:你只能使用标准的栈操作 —— 也就是只有 push to top, peek/pop fr原创 2021-03-05 15:53:53 · 113 阅读 · 0 评论 -
leetcode300/ 354 最长递增子序列 /俄罗斯套娃信封问题(待补充)
leetcode每日一题 2021.3.4根据群里大佬所说,今天的题目有两种解法,一种是采用dp(线段树),另一种是采用二分+贪心法。(1)leetcode300 最长递增子序列**方法一:**采用动态规划的方法,我们可以把计算最长递增子序列看做一种dp,定义下面一些公式:class Solution {public: int lengthOfLIS(vector<int>& nums) { int n=nums.size(); if原创 2021-03-04 23:00:06 · 204 阅读 · 1 评论 -
leetcode338 比特位计数
leetcode每日一题 2021.3.3(1)利用x=x&(x-1)每次能够把x的最末尾的一个1变为0的小技巧,分别对每一个数字进行计数。class Solution {public: int count1(int n) { int ans=0; while(n>0) { n=n&(n-1);//将最末尾的1个1变为0 ans++; }原创 2021-03-03 15:08:48 · 109 阅读 · 1 评论 -
Leetcode304 二维区域和检索 - 矩阵不可变
leetcode每日一题 2021.3.2(1)方法一:一维前缀和这道题采用的第一种方法就是求每一行的前缀和,比如在一个矩阵计算每一层的前n个数的和在这里刚开始我写的代码一直报错,原因是没有考虑到输入的矩阵可能会空矩阵,当矩阵为空矩阵,在if判断外取matrix[0].size()会陷入死循环并超时。```cppclass NumMatrix {public: vector<vector<int>> sums;//计算每一行的前缀和 NumMatrix原创 2021-03-02 21:53:12 · 130 阅读 · 0 评论 -
Leetcode34 二分查找
Leetcode34 二分查找分别采用二分查找找到数组中出现的最左边以及最右边。class Solution {public: vector<int> searchRange(vector<int>& nums, int target) { //查找最左边 int i=0; int j=int(nums.size())-1; int ans=nums.size();原创 2021-03-01 21:15:03 · 148 阅读 · 0 评论