weixin_43288822
码龄7年
求更新 关注
提问 私信
  • 博客:21,446
    社区:1
    动态:21
    21,468
    总访问量
  • 34
    原创
  • 1
    粉丝
  • 87
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
加入CSDN时间: 2018-09-26
博客简介:

weixin_43288822的博客

查看详细资料
个人成就
  • 获得2次点赞
  • 内容获得0次评论
  • 获得5次收藏
  • 博客总排名1,585,595名
创作历程
  • 34篇
    2022年
  • 1篇
    2020年
成就勋章
TA的专栏
  • 英雄哥算法入门指引
    18篇
  • LeetCode
    25篇
  • C++
    1篇
  • 《C++ pirmer》学习
    4篇
  • 数据结构
    3篇
  • 实验室

TA关注的专栏 0

TA关注的收藏夹 0

TA关注的社区 1

TA参与的活动 0

兴趣领域 设置
  • 人工智能
    opencv语音识别计算机视觉机器学习图像处理
创作活动更多

新星杯·14天创作挑战营·第13期

这是一个以写作博客为目的的创作活动,旨在鼓励大学生博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!我们一起发掘写作的魅力,书写出属于我们的故事。我们诚挚邀请你们参加为期14天的创作挑战赛!注: 1、参赛者可以进入活动群进行交流、互相鼓励与支持(开卷),虚竹哥会分享创作心得和涨粉心得,答疑及活动群请见:https://bbs.csdn.net/topics/619781944 【进活动群,得奖概率会更大,因为有辅导】 2、文章质量分查询:https://www.csdn.net/qc

92人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

数据结构-线性表(数组)-线性前缀和+哈希表 930 && 974 && 525

930和相同的二元子数组 同560题思路求连续子数组,一般考虑前缀和。需要查找再想到哈希表。sum[i]表示数组nums中0~i的前缀和,假设子数组[j,i+1]和为gal,也就是sum[j]-sum[i] = gal;子数组长度为j-i;所以遍历nums,查看当前值前缀和在哈希表中存在的个数x,就说明当前值为结尾的子数组和为gal的子数组个数为x个代码解析class Solution {public: int numSubarraysWithSum(vector<.
原创
博文更新于 2022.06.04 ·
511 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

数据结构-线性表(数组)-双指针->数组逼近(左右指针)167 & 15* & 18 &11*

两数之和 II - 输入有序数组思路我的思路:从数组两端逼近target,左右指针指向元素和大于target,则右指针左移;反之,左值针右移。其他:确定一个元素,找target-nums[i],有序数组,二分查找。代码我的做法:class Solution {public: vector<int> twoSum(vector<int>& numbers, int target) { int len = numbers.size().
原创
博文更新于 2022.06.03 ·
357 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

数据结构-线性表(数组)-双指针-不定长滑动窗口567&713&3&697

目录什么时候使用不定长滑动窗口(尺取法)?尺取法做法跟前缀和法的区别?leetcode题713. 乘积小于 K 的子数组什么时候使用不定长滑动窗口(尺取法)?寻找一个容器中是否有(有多少个)子容器符合某种条件,根据上述,这个条件大概率是指小于某某指,可以使用尺取法。尺取法做法尺取法做法: 现在遇到的尺取法就是固定右边界,这时该窗口刚好符合不超过条件,当右边界往右再移动一下就会不符合条件。这时就需要右移左边界。左右指针都只会增加不会减小。跟前缀和法的区别?什么时候尺取法?什么时候前缀和法?那种场景
原创
博文更新于 2022.06.01 ·
347 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

数据结构-线性表(数组)-双指针-定长滑动窗口567

定长窗口方法:固定窗口长度不变,使用该窗口在序列中滑动,判断当前窗口中的元素跟目标是否匹配567.字符串的排列方法固定窗口,由于排列不会改变字符串中每个字符的个数,所以只有当两个字符串每个字符的个数均相等时,一个字符串才是另一个字符串的排列。所以可以通过对应元素个数是否相等来判断是否匹配。数组cnt1表示s1中每个字符出现的次数,数组cnt2表示s2窗口中每个元素出现的次数。判断两个数组是否相等就可以。对上面优化,因为每次滑动窗口,只统计了一进一出两个字符,但是要比较整个数组,浪费资源。只
原创
博文更新于 2022.05.27 ·
168 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C++ 基础知识点

float 类型如何存储?float:一位符号位,8位指数位,23位尾数位。double :1 11 52例如9.125 = 1001.001 = 1.001001*(2^11) = 1.001001*(2^3)9.125为正,符号位:0指数位为3偏移127,结果为130 指数位:10000010 为解决指数为负时无法存储的现象,此处的指数值在存储时需加上偏移量1279.125二进制形式以科学计数法表示时,小数部分为001001尾数位:001001,后面补零补码、反码、阶码、..
原创
博文更新于 2022.05.23 ·
403 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

数据结构-线性表(数组)-双指针-快慢指针 Offer22&19&141+142floyd判环法

剑指 Offer 22. 链表中倒数第k个节点
原创
博文更新于 2022.05.16 ·
260 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

数据结构-线性表(数组)-双指针->数组追赶(快慢指针) 977&344&151&524&611无&80&986(没做)(总结各种排序算法 原地算法图解)

这类题为什么叫数组追赶?有序数组的平方思路法一:先对nums每个元素进行平方,再sort排序法二:找到nums中负数和正数的分界线,进行类似与归并排序进行排序。[0,divid]为负数,平方后递减;[divid+1,len-1]为正数,平方后递增。相当于有了两个有序数组,用两个指针分别指向前一个数组最后面元素和后一个数组最前面的元素,均为两个数组中最小的元素,依次比较,选较小的放入新数组中,并且移动指针,当某个指针移出边界后,令一个指针还没遍历到的依次放入新数组就可。法三:左右指针,nums
原创
博文更新于 2022.05.06 ·
1347 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

数据结构-线性表(数组)-线性前缀和+二分查找 528. 按权重随机选择 非常重要

思路构造前缀和数组,在0~sum中生成一个随机数,找第一个严格大于随机生成数x的数,这个数对应的下标就是要找的下标。前缀和数组presum,presum[i]与前一位置的前缀和presum[i-1]相减正好的下标i对应的数,也就是下标i的权值,就相当于以长度代表概率,对于任意一个x,他严格小于最小前缀和presum[i],表示他在[presum[i-1],presum[i]]区间内,区间长度:presum[i]-presum[i-1] = w[i],随机数一共有sum种情况,在以上区间的情况为w[i].
原创
博文更新于 2022.04.22 ·
398 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

数据结构-线性表(数组)-前缀和入门 724. 寻找数组的中心下标 && 1588. 所有奇数长度子数组的和 &&303. 区域和检索 - 数组不可变

724. 寻找数组的中心下标解题思路枚举数组中每个元素,计算左边和右边是否相等,相等则返回下标。代码int pivotIndex(vector<int>& nums) { int len = nums.size(); //1 int sum[len]; for(int i = 0;i<len;++i){ sum[i] = nums[i]; if(i){
原创
博文更新于 2022.04.16 ·
1328 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

数据结构-线性表(数组)-前缀和变形-前缀积 238. 除自身以外数组的乘积&&剑指 Offer 66. 构建乘积数组

解题思路与前缀和数组和后缀和数组类似,构建前缀积数组和后缀积数组利用O(1)的空间复杂度,构建后缀积数组,利用前缀积值利用前缀积值和后缀积值同时进行 代码q前缀积数组和后缀积数组class Solution {public: vector<int> productExceptSelf(vector<int>& nums) { int len = nums.size(); vector<int> .
原创
博文更新于 2022.04.15 ·
1048 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

数据结构-线性表(数组)-前缀和统计排序 523. 连续的子数组和 哈希 除法转换成求余

解题思路暴力解法:先生成一个前缀和数组,再从字串长度为L = 2开始到L = len 对数据数组进行遍历。会超时。O(n^2)利用前缀和值+哈希表。其中有一个同余定理,既当a%x == b%x 时,b-a(假设b>a)为x的整数倍。可以遍历数组,每次计算当前前缀和的值sum,sum%x在哈希表中时,需要再进行判断当前位置与哈希表中相等的那个之间的距离是否大于等于2如果sum%x不在哈希表中时,把sum%x存入哈希表中哈希表初始化时要存入(0,-1),下标比长度小1,当元素前.
原创
博文更新于 2022.04.15 ·
227 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

66.加一

自己的方法1.第一次提交错误,没有考虑到进位。2.考虑到进位之后,对于把数组转化成向量又出现了问题。首先分情况没有分对 应该判断进位与digits第一位之和是否为10。是则先添加1 0 然后再添加数组中0~len-2个元素,共2+len-1=len+1个数;否则与digits[i]处理方式相同,把数组元素添加到result就行class Solution {public: vector<int> plusOne(vector<int>& digits)
原创
博文更新于 2022.04.05 ·
75 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

数据结构-线性表(数组)-原地算法 27.移除元素--左右指针细节处很重要

法一:双指针法(快慢指针):从头出发,在原位刷新一个新数组,慢指针代表新的数组的尾部,快指针遍历原数组。对不等于val的值,从原数组中添加到新数组的尾部。class Solution {public: int removeElement(vector<int>& nums, int val) { int len = nums.size(); int j = 0; for(int i = 0;i<len;i++)
原创
博文更新于 2022.04.04 ·
96 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

数据结构-线性表(数组)-原地算法 217.存在重复元素&&2154.将找到的值乘以2(排序 哈希表)

解题思路法一:先将数组排序,再利用候选数组(跟26. 删除有序数组中的重复项一样),如果候选数组最后的索引与原数组长度-1相等,则没有相同的元素查找可以利用哈希表,如果当前元素没有在哈希表中,则把当前元素添加进去,如果在,则直接返回false。代码法一:class Solution {public: bool containsDuplicate(vector<int>& nums) { int len = nums.size(); ..
原创
博文更新于 2022.04.02 ·
467 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

数据结构-线性表(数组)-线性枚举中最值算法 153.寻找旋转排序数组中的最小值 -非常重要的题(二分法)

二分法的时间复杂度是O(logn)1. 法一:遍历全部数组找到最小值 O(n);2. 法二:对数组进行排序,最小值就是nums[0];3. 法二:二分查找法 :对于有序数组 类似单峰函数的数组class Solution {public: int findMin(vector<int>& nums) { int left = 0,right = nums.size()-1; while(left<right){//保证左闭右开区间里
原创
博文更新于 2022.04.01 ·
853 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

数据结构-线性表(数组)-原地算法 26. 删除有序数组中的重复项

思路数组是升序,所以相等的元素一定出现在连续的一段区间内。核心是对比,相等就存到候选数组中,不相等就舍弃。最后得到的是候选数组。代码class Solution {public: int removeDuplicates(vector<int>& nums) { int j = 0; int len = nums.size(); for(int i = 1; i<len; ++i){ i..
原创
博文更新于 2022.03.31 ·
671 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

数据结构-线性表(数组)-使用线性枚举求数组中最值 2170.使数组变成交替数组的最少操作数(非常重要的题-hash)

思路:1.每个数都可以经过一次修改(注意:不是加一或者减一),所以每个数最多只需要修改一次。2.所有下标为奇数的数需要改成一样的;所有下标为偶数的数也需要改成一样的。3.所以,我们只需要统计所有下标为奇数的数里面频率最高的找出来,然后把其它数改成和它一样;下标为偶数的也同样处理。4.最后统计两者之和。5.统计一堆数里面频率最高的数,可以用哈希表实现。6.但是,相邻的数又不能相等,所以当找出来的奇数和偶数下标对应的频率出现最高的数是相等的情况,我们需要让 奇数下标 的数选择次大的数,或者让偶数..
原创
博文更新于 2022.03.30 ·
695 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

数据结构-线性表(数组)-线性枚举中最值算法 1464.数组中两元素的最大乘积 && 628.三个数的最大乘积

数据结构:数组算法:线性枚举目标:求最大值原始算法思路就是求解数组nums中最大值和次大值class Solution {public: int maxProduct(vector<int>& nums) { int len = nums.size(); int max = (nums[0]-1)*(nums[1]-1); int temp; for(int i = 0;i < len;
原创
博文更新于 2022.03.29 ·
1170 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

数据结构-线性表(数组)-使用线性枚举求数组中最值 414. 第三大的数

线性枚举:通过线性枚举求第几大值就需要定义相同个变量,但是当找n/2个最大值时,时间复杂度会变为O(n^2),这时候需要别的方法代码块中注释的是很重要的技巧。class Solution {public: int thirdMax(vector<int>& nums) { int len = nums.size(); long max = -2147483649; long secondMax = -2147483649.
原创
博文更新于 2022.03.29 ·
1090 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

《C++ primer》第九章

#include<iostream>#include<string>#include<list>#include<deque>#include<vector>#include<cctype>#include<iterator>#include<forward_list>using namespace std;void f902(){ list<deque<int>>
原创
博文更新于 2022.03.28 ·
514 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多