05 2023 档案

摘要:满足相似的条件:1.长度一样 2.组成的字母组合相同 3.每个组成字母的个数集合相同 比较两个vector,直接用==/!= 排序vector sort(迭代器1,迭代器2); 初始化vector形式:vector<类型>name(形式) if(word1.lenth()!=word2.length 阅读全文
posted @ 2023-05-29 16:37 iu本u 阅读(12) 评论(0) 推荐(0) 编辑
摘要:哈希表初始化有unordered_map<int,int>map或map<int,int>m 他们都是不存储重复的键 map[key]=value Vector::count(): count(v.begin(),v.end(),target) 阅读全文
posted @ 2023-05-24 13:59 iu本u 阅读(19) 评论(0) 推荐(0) 编辑
摘要:哈希列表存储的是不重复的元素,使用两个哈希列表存储这两个数组。再遍历其中一个哈希列表,查看是否存在另一个哈希列表中 set.insert() set1.count(元素) for(int num:nums1){ set1.insert(num); } for(int num:set1){ if(!s 阅读全文
posted @ 2023-05-23 17:06 iu本u 阅读(4) 评论(0) 推荐(0) 编辑
摘要:使用数学方法: 假设左边的所有数加起来的和是sum,total为数组所有元素加起来的和,当i满足中心下标的条件时,即: sum=total-sum-nums[i]; 2*sum+nums[i]=total; 当中心下标是首位时,即左边sum为0;当中心下标是尾位时,右边total-sum-nums[ 阅读全文
posted @ 2023-05-21 19:48 iu本u 阅读(5) 评论(0) 推荐(0) 编辑
摘要:递归: 1.记pre[i]为以i位置结尾的连续1长度。 pre[i]=0;ai=0 pre[i]=pre[i-1]+1;ai=1 记suf[i]为以位置i开头的连续1长度; suf[i]=0;ai=0 suf[i]=suf[i+1]+1;ai=1 计算删掉i位置的连续1的长度为pre[i-1]+su 阅读全文
posted @ 2023-05-20 20:05 iu本u 阅读(11) 评论(0) 推荐(0) 编辑
摘要:1.二分查找法 用一数组P【i】记录每个位置之前到自己本身位置i有多少个0,只要满足【left,ridht】之间的0个数小于等于k就可以连接成为连续的1。 即P【上界】-P【下界】<=k,枚举right,则要找到最小left就能够找到最长的连续1,P[right]-k<=P[left],则最小的le 阅读全文
posted @ 2023-05-14 22:13 iu本u 阅读(14) 评论(0) 推荐(0) 编辑
摘要:lower_bound(下界,上界,目标值)找到不小于目标值的位置,即大于等于 while(left<right){ int mid=left+(right-left)/2;//查找区间[left,right) if(target<nums[mid]){ left=mid+1; }else{ rig 阅读全文
posted @ 2023-05-14 21:31 iu本u 阅读(21) 评论(0) 推荐(0) 编辑
摘要:C99:int数字_t,t表示它是取另一个名字,不是新的数据类型 uint数字_t表示无符号,编译器把这种数据类型看成数字。 数字是指单位长度有多少bit 1.string转vector<char> 用assign string与数字转化 string s=“helllo word!” vector 阅读全文
posted @ 2023-05-13 19:06 iu本u 阅读(588) 评论(0) 推荐(0) 编辑
摘要:滑动窗口: 利用一个变量记录nums[k-1]之后位置的k长度子数组的总和,再用一个变量记录最大值,与最大就调换。 起初开辟的是一个vector容器去存,改为用一个变量最好 for(int i=0;i<k;i++){ sum+=nums[i]; } for(int i=k;i<n;i++){ sum 阅读全文
posted @ 2023-05-10 19:30 iu本u 阅读(5) 评论(0) 推荐(0) 编辑
摘要:1.排序双指针 先排序 sort(nums.begin(),nums.end()); 在双指针查找 while(left<right){ if(nums[left]+nums[right]<k){ left++; }else if(nums[left]+nums[right]>k){ right-- 阅读全文
posted @ 2023-05-09 17:00 iu本u 阅读(10) 评论(0) 推荐(0) 编辑
摘要:本题最关键的一点是移动的是短板,不停向内移动短板才可能将面积变大。 int i=0,j=height.size(); while(i<j){ area=height[i] < height[j]? max(area,(j-i)*height[i++]): max(area,(j-i)*height[ 阅读全文
posted @ 2023-05-06 16:17 iu本u 阅读(9) 评论(0) 推荐(0) 编辑
摘要:1.初始化动态数组,加边界,所有从t超界的位置找一个字母一定是找不到的,所以设为边界值即代表无穷大。 2.预处理:因为如果t现在位置找不到所找字母则从t后一位开始找,所以 f[i][j]=f[i+1][j]//同时从后往前更新数组(t[i]!=j)f[i][j]=i//t[i]==j 3.按s的字母 阅读全文
posted @ 2023-05-05 17:15 iu本u 阅读(16) 评论(0) 推荐(0) 编辑
摘要:238: 最新置换的位置后面应该都是0 for(int i=0;i<n;i++){ if(nums[i]!=0){ nums[i]与nums[j]交换位置,并移动j指针一格,因为最新置换的位置后面否应该是0}} 阅读全文
posted @ 2023-05-04 15:23 iu本u 阅读(18) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示