![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
力扣刷题
一袍清酒付825
转Tswatery.github.io
展开
-
Leetcode 219 存在重复元素 II 2022.01.19每日一题
文章目录题目思路AC代码题目存在重复元素思路滑动窗口,每次滑入的数会有两种改变维护区间的情况,第一种是区间内存在相同的数,进行比较操作;第二种是不存在相同的数,即原状态不变。可以通过集合以及哈希表来处理维护操作。AC代码集合class Solution {public: bool containsNearbyDuplicate(vector<int>& nums, int k) { int len = nums.size(); un原创 2022-01-19 13:39:53 · 501 阅读 · 0 评论 -
leetcode 273场周赛 Problem-C
文章目录题目思路AC代码后言题目5965. 相同元素的间隔之和思路思路是利用前缀、后缀数组来减少计数问题,可惜做的时候TLE了。AC代码class Solution {public: vector<long long> getDistances(vector<int>& arr) { unordered_map<int,vector<int> > m; int len=arr.size();原创 2021-12-26 14:23:44 · 293 阅读 · 1 评论 -
力扣 双周赛补题 2086. 从房屋收集雨水需要的最少水桶数
文章目录题目思路AC代码后记题目从房屋收集雨水需要的最少水桶数思路思路是贪心,因为我们需要从左向右找寻所有的水桶数,所以我们对于每一个房屋都优先判断右边是否能放水桶,右边不能放就看左边,两种情况的剩余情况输出-1。对于计数有两种方法,第一个是将对应合适的雨点数换成字符B,最后统计字符的个数;还有一个就是直接计数。计数二的代码真的好优美!AC代码计数一class Solution {public: int minimumBuckets(string street) {原创 2021-12-04 11:30:58 · 710 阅读 · 0 评论 -
1005. K 次取反后最大化的数组和
文章目录题目思路代码后记题目1005. K 次取反后最大化的数组和思路我自己的思路是先对这个序列进行排序,然后优先将负数取反。对于将所有负数都取反了k仍然有次数可以对k的奇偶性进行讨论,如果是奇数,我们找出序列中最小的数进行取反。优化的思路是利用哈希表进行正负数计数,因为题中的范围是-100~100.采用空间换时间。代码class Solution {private: int getval(vector<int> s){ int res=0,len=s.s原创 2021-12-03 16:28:30 · 186 阅读 · 0 评论 -
力扣 每日一题 丢失的数字
文章目录题目思路AC代码后记题目丢失的数字思路第一个思路是利用数学公式来对于nums做差得出答案;第二个思路我觉得比较经典就是利用异或运算。因为异或有两个独特的性质:0与任何数异或都是那个数任何数与自身异或都是0;所以我们可以利用这个性质对nums的所有元素求一次异或(相同是0,不同是1),然后再对0-n内的所有数进行一次异或运算,所得到的就是缺失的数AC代码代码1class Solution {public: int missingNumber(vector<int&原创 2021-11-06 08:31:14 · 76 阅读 · 0 评论 -
力扣 496 下一个更大的元素I
文章目录题目思路AC代码后记题目496. 下一个更大元素 I思路接到手,肯定是考虑直接暴力模拟的,时间复杂度是O(mn)。题解给了一个更好的方法,利用单调栈来对nums2进行预处理。这个方法实在是很妙。大致的思路是,倒序遍历nums2,对于某个循环到的数num来说,如果num比这个栈顶元素大,那么这个元素出栈,因为它不可能是num右边第一个比它大的数。对于这个循环结束有两种情况,第一是栈顶元素大于num,那么这个栈顶元素就是这个num所对应的数;第二是栈空了,说明右边没有满足题意的数,对应-1。原创 2021-11-04 11:45:38 · 143 阅读 · 0 评论 -
力扣每日一题 2021.10.23
文章目录题目思路AC代码后记题目492. 构造矩形思路很简单的模拟法,我们需要避免一些重复的运算,所以循环遍历到sqrt(area)即可。另外设置一个delt1与delt来记录每次length与width之间的差,选取最小的那个,总是就很简单啦。。AC代码class Solution {public: vector<int> constructRectangle(int area) { vector<int> res; int d原创 2021-10-23 10:09:41 · 85 阅读 · 0 评论 -
力扣 剑指 Offer 10- I. 斐波那契数列
文章目录题目思路AC代码题目斐波那契数列思路这次的斐波那契数列不太一样,它输入的数值会很大,远远超过long long的取值范围。所以我们要在滚动数组的同时处理这些数。注意1e9类的数在底层中是以浮点数存储的,所以最后要用int转一下。AC代码C++class Solution {public: int fib(int n) { if(n==0) return 0; double q=0,res=1,temp=0; for(int i原创 2021-09-05 22:30:12 · 66 阅读 · 0 评论 -
力扣 746 使用最小化花费爬楼梯
文章目录题目思路AC代码收获题目 使用最小化花费爬楼梯思路一个动态规划的题目,典型的多阶段求解最优解的问题。用dp数组存储对应的状态值,表示到第i个楼梯花费的最小体力。做动态规划题的优先是要考虑边界条件,再是动态转移方程,其实不用管前面是怎样走过来的,我们只需要使用这个最值即可。AC代码C++版本的class Solution {public: int minCostClimbingStairs(vector<int>& cost) {原创 2021-09-01 11:13:14 · 70 阅读 · 0 评论 -
力扣 26.删除有序数组中的重复元素
文章目录题目思路AC代码收获题目删除有序数组中的重复元素思路快慢指针。快指针不断向前走。判断快指针所指的数与快指针前面的数是否相等,如果相等就说明是重复的,要继续向后移动,如果不相等,则说明是快指针遇到的不同的数,将其存入慢指针即可。注意由于数组下标带了运算符号,所以有可能会出现越界或者负数的情况。报错的一串英文留在这:Line 1034: Char 34: runtime error: addition of unsigned offset to 0x606000000020 overflow原创 2021-08-16 14:06:11 · 263 阅读 · 0 评论 -
力扣 27.移除元素 关于数组的存储是连续的问题
文章目录题目思路AC代码题目移除元素思路其实一开始的思路,是想数组中出现的元素,删掉不就好了嘛。但是,要知道,C++中的数组中的元素是连续的,不能删除只能覆盖(不能跟python的列表混杂)。其实对于array类型的数组我们并没有删除操作,但是题中所给的vector容器是由erase操作的,但是通过代码实现发现vector容器并不能实现多次erase连续删除。#include <iostream>#include <vector>using namespace std原创 2021-08-15 22:09:05 · 223 阅读 · 0 评论 -
力扣 13.罗马数字转整数
文章目录题目AC代码总结题目题目在这这是一道简单等级的题目。AC代码这是我的思路,就是按照题中给的意思,一行代码一行代码地撸出来的,显得很笨。class Solution {public:int romanToInt(string s) { int len = s.size(); map<char, int> m; m['I'] = 1; m['V'] = 5; m['X'] = 10; m['L'] = 50; m['C'] = 100; m['D'] = 50原创 2021-08-10 15:18:33 · 98 阅读 · 0 评论