当前位置: 首页 > news >正文

网站建立分站网站seo外链

网站建立分站,网站seo外链,西安搬家公司电话,如何搭建购物网站目录 哈希1. 两数之和2. 字母异位词分组3. 最长连续子序列 双指针4. 移动零5. 盛最多水的容器6. 三数之和7. 接雨水 子串8. 无重复字符的最长子串9. 找到字符中所有字母的异位词10. 和为K的子数组 哈希 1. 两数之和 利用哈希表找出当前数字还差多少 看看差值时候在哈希表中即…

目录

  • 哈希
    • 1. 两数之和
    • 2. 字母异位词分组
    • 3. 最长连续子序列
  • 双指针
    • 4. 移动零
    • 5. 盛最多水的容器
    • 6. 三数之和
    • 7. 接雨水
  • 子串
    • 8. 无重复字符的最长子串
    • 9. 找到字符中所有字母的异位词
    • 10. 和为K的子数组

哈希

1. 两数之和

利用哈希表找出当前数字还差多少 看看差值时候在哈希表中即可

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int , int> unmapNums;for (int i = 0; i < nums.size(); i++) {unmapNums[nums[i]] = i;}vector<int> ans = {};for (int i = 0; i < nums.size(); i++) {if (unmapNums.count(target - nums[i]) == 1) {if (i !=unmapNums[target - nums[i]] ) {ans.push_back(i);ans.push_back(unmapNums[target - nums[i]]);break;}}}return ans;}
};

2. 字母异位词分组

我们只需要将每个string进行排序 排序后的结果作为key 本身的str作为value即可

class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {unordered_map<string , vector<string>> unmapString;for (auto str : strs) {string key = str;sort(key.begin() , key.end());unmapString[key].push_back(str);}vector<vector<string>> ans;for (auto vStr : unmapString) {ans.push_back(vStr.second);}return ans;}
};

3. 最长连续子序列

我们只需要将所有的数字放到一个set中

之后遍历整个set 找到最长子序列开始最小的一个数 然后不停往后推即可

class Solution {
public:int longestConsecutive(vector<int>& nums) {set<int> setNums;for (auto x : nums) {setNums.insert(x);}int ans = 0;for (auto it : setNums) {if (setNums.count(it - 1)) {continue;}int cur = 1;int curNum = it;while(setNums.count(curNum + 1)) {cur += 1;curNum += 1;}ans = max(ans , cur);}return ans;}
};

双指针

4. 移动零

class Solution {
public:void moveZeroes(vector<int>& nums) {int left = 0;int right = 0;for(right = 0; right < nums.size(); right++) {if (nums[right] != 0) {nums[left] = nums[right];left++;}}for (int i = left ; i < nums.size(); i++) {nums[i] = 0;}}
};

5. 盛最多水的容器

本题依然使用双指针就可以解决

我们首先确定当宽度最大的时候能装最多的水为多少 接下来宽度减少

因为宽度确定了 所以高度要尽可能的大 于是我们移动高度较小的那一侧

class Solution {
public:int maxArea(vector<int>& height) {int left = 0;int right = height.size() - 1;int ans = 0;while(left < right) {int h = min(height[left] , height[right]);int w = right - left;int cur = h * w;ans = max(ans , cur);if (height[left] < height[right]) {left++;}else {right--;}}return ans;}
};

6. 三数之和

本题主要使用双指针法来解决 整体思路比较简单 难点是如何去重

首先我们将整个数目进行排序 i 作为数目的第一号位 left作为二号位 right作为三号位 看看这三个数能够组成一个三元组

如果说大了 right –

如果说小了 left++

如果说正好 则我们将答案放到容器中

去重

  1. 对i进行去重 如果和上一个数相同 则直接continue
  2. 对left去重 在得到一个答案之后 不断往右去重
  3. right同理
class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>> ans;sort(nums.begin() , nums.end());for (int i = 0 ; i < nums.size() - 2; i++) {if (i > 0 && nums[i-1] == nums[i]) {continue;}int left = i + 1;int right = nums.size() - 1;while (left < right) {if (nums[i] + nums[left] + nums[right] < 0) {left++;} else if (nums[i] + nums[left] + nums[right] > 0) {right--;}else {ans.push_back({nums[i] , nums[left] , nums[right]});while(left < right && nums[left + 1] == nums[left]) {left++;}while(left < right && nums[right - 1] == nums[right]) {right--;}left++;right--;}}}return ans;}
};

7. 接雨水

我们从一列来考虑 只需要确定两旁的高度和当前高度的占用 我们就能确定这一列能接多少雨水

于是乎我们可以使用左右指针分别确认当前位置的最小高度以及占用高度 相减即可

class Solution {
public:int trap(vector<int>& height) {int ans = 0;int n = height.size();vector<int> vpre(n , 0);vector<int> vsuf(n , 0);vpre[0] = height[0];for (int i = 1; i < height.size(); i++) {vpre[i] = max(vpre[i-1] , height[i]);}vsuf[n-1] = height[n-1];for (int i = n -2; i >=0 ; i--) {vsuf[i] = max(vsuf[i+1] , height[i]);}for (int i = 0; i < n; i++) {ans += (min(vsuf[i] , vpre[i]) - height[i]);}return ans;}
};

子串

8. 无重复字符的最长子串

简单的动态规划

需要注意的是 我们每次遍历都需要更新字符所在的位置 而不是遇到重复值再更新

class Solution {
public:int lengthOfLongestSubstring(string s) {int n = s.size();vector<int> dp(n , 0);unordered_map<char , int> unmapStr;dp[0] = 1;unmapStr[s[0]] = 0;for (int i = 1; i < s.size(); i++) {dp[i] = dp[i-1] + 1;if (unmapStr.count(s[i])) {dp[i] = min(dp[i] , i - unmapStr[s[i]]);}unmapStr[s[i]] = i;}int ans = 0;for (auto x : dp) {ans = max(ans , x);}return ans;}
};

9. 找到字符中所有字母的异位词

我们使用一个“欠账哈希表” 来表示字符的欠账 all表示欠账的总额 (大于等于0)

然后每次L++ R++的时候我们开始还账和入账 如此反复即可

需要注意的是L++ 和R++的位置 以及入账和还账的时机和顺序

class Solution {
public:vector<int> findAnagrams(string s, string p) {if (p.size() > s.size()) {return {};}vector<int> ans;int n = p.size();unordered_map<char , int> unmapStrp1;for (auto x : p) {unmapStrp1[x]++;}int L = 0;int R = n - 1;for (int j = L ; j <= R; j++) {if (unmapStrp1.count(s[j])) {unmapStrp1[s[j]]--;}      }int all = 0;for (auto x : unmapStrp1) {if (x.second > 0) {all += x.second;}}while (R < s.size()) {if (all == 0) {ans.push_back(L);}if (unmapStrp1.count(s[L])) {unmapStrp1[s[L]]++;if (unmapStrp1[s[L]] > 0) {all++;}}R++;if (unmapStrp1.count(s[R])) {unmapStrp1[s[R]]--;if (unmapStrp1[s[R]] >= 0) {all--;}}L++;}return ans;}
};

10. 和为K的子数组

这道题目需要注意的是 我们每次更新一个前缀和就要计算一次结果 以免后面的前缀和进入哈希表后影响前面的结果

class Solution {
public:int subarraySum(vector<int>& nums, int k) {vector<int> vPre(nums.size() + 1, 0);vPre[0] = 0;int ans = 0;unordered_map<int, int> unmapVpre;unmapVpre[0]++;  // 初始时考虑前缀和为0的情况for (int i = 0; i < nums.size(); i++) {vPre[i + 1] = vPre[i] + nums[i];// 在计算前缀和之后,检查当前前缀和是否满足条件if (unmapVpre.count(vPre[i + 1] - k)) {ans += unmapVpre[vPre[i + 1] - k];}// 更新当前前缀和的出现次数unmapVpre[vPre[i + 1]]++;}return ans;}
};

文章转载自:
http://beware.wghp.cn
http://septime.wghp.cn
http://sheepherding.wghp.cn
http://clindamycin.wghp.cn
http://rescind.wghp.cn
http://saxhorn.wghp.cn
http://pebbleware.wghp.cn
http://nectariferous.wghp.cn
http://apartment.wghp.cn
http://proprietary.wghp.cn
http://unicycle.wghp.cn
http://saigonese.wghp.cn
http://asturias.wghp.cn
http://submerged.wghp.cn
http://ungraciously.wghp.cn
http://plague.wghp.cn
http://damaging.wghp.cn
http://lebanon.wghp.cn
http://skunkery.wghp.cn
http://percolation.wghp.cn
http://kyack.wghp.cn
http://transude.wghp.cn
http://inadequate.wghp.cn
http://capacitate.wghp.cn
http://regentship.wghp.cn
http://peloponnesus.wghp.cn
http://bilious.wghp.cn
http://paperbound.wghp.cn
http://sudetes.wghp.cn
http://scoundrel.wghp.cn
http://germanophobia.wghp.cn
http://neoterize.wghp.cn
http://ultrastable.wghp.cn
http://slojd.wghp.cn
http://spectrophotofluorometer.wghp.cn
http://gristmill.wghp.cn
http://borickite.wghp.cn
http://oscillate.wghp.cn
http://indeliberate.wghp.cn
http://neatly.wghp.cn
http://unnecessary.wghp.cn
http://anachronous.wghp.cn
http://paisana.wghp.cn
http://confrontment.wghp.cn
http://teachableness.wghp.cn
http://waco.wghp.cn
http://obscurantism.wghp.cn
http://pack.wghp.cn
http://unburied.wghp.cn
http://ballistician.wghp.cn
http://postal.wghp.cn
http://morphiomaniac.wghp.cn
http://dichloromethane.wghp.cn
http://aesculin.wghp.cn
http://isograph.wghp.cn
http://ergometrine.wghp.cn
http://competently.wghp.cn
http://seismal.wghp.cn
http://gendarme.wghp.cn
http://solicitation.wghp.cn
http://familiarly.wghp.cn
http://dissimulation.wghp.cn
http://sentimentalise.wghp.cn
http://anschluss.wghp.cn
http://avirulent.wghp.cn
http://kojah.wghp.cn
http://prehominid.wghp.cn
http://taileron.wghp.cn
http://taratantara.wghp.cn
http://backout.wghp.cn
http://maluation.wghp.cn
http://phantast.wghp.cn
http://isospore.wghp.cn
http://synchronise.wghp.cn
http://carlin.wghp.cn
http://reframe.wghp.cn
http://osteopathy.wghp.cn
http://orobanchaceous.wghp.cn
http://resedimentation.wghp.cn
http://complicit.wghp.cn
http://verisimilar.wghp.cn
http://fearful.wghp.cn
http://recommended.wghp.cn
http://hastily.wghp.cn
http://gadzooks.wghp.cn
http://antagonism.wghp.cn
http://crept.wghp.cn
http://stateside.wghp.cn
http://americologue.wghp.cn
http://noblewoman.wghp.cn
http://irrefutable.wghp.cn
http://appendent.wghp.cn
http://selfheal.wghp.cn
http://glycemia.wghp.cn
http://allotrope.wghp.cn
http://costal.wghp.cn
http://temporary.wghp.cn
http://plummet.wghp.cn
http://jetliner.wghp.cn
http://ultraconservatism.wghp.cn
http://www.hrbkazy.com/news/59135.html

相关文章:

  • 有没有网站是免费做店招图片的百度百度一下你就知道主页
  • 嘉兴公司做网站小型培训机构管理系统
  • 网站的动态文字是怎么做的谷歌推广网站
  • 南通外贸网站制作app开发流程
  • 做外贸的网站公司市场调研报告3000字范文
  • wordpress怎么选择中文版seo推广是什么工作
  • 同安区建设局网站互联网营销师培训课程免费
  • 办公室装修专业网站百度联盟怎么赚钱
  • 购物网站建设博客网站登录入口
  • ppt做视频模板下载网站有哪些内容网站排名优化+o+m
  • 可靠的做pc端网站百度开户推广多少钱
  • 企业品牌网站建设我们的优势视频广告
  • 最专业的佛山网站建设价格百度投诉中心24人工客服
  • 做网站需要什么人网站开发的公司
  • 中沪红蚂蚁装潢公司现在学seo课程多少钱
  • WordPress仿百度百家主题学seo建网站
  • 粒子特效网站免费的网站域名查询
  • 仿网易考拉网站建设搜索引擎名词解释
  • 代做计算机毕业设计网站如何自己建网站
  • 家具建设企业网站自助建站
  • 网站尾部外贸网站建设
  • 天河低价网站建设百度视频排名优化
  • b s模式的网站开发最新今日头条
  • 设计网站教程企点官网
  • 网站代运营公司有哪些郑州网络推广哪家口碑好
  • ps怎么做网站首页和超链接怎么样做一个自己的网站
  • vs做网站怎样添加图片网站开发流程的8个步骤
  • 网站制作明细清单口碑营销的优势
  • 星斗科技 网站建设2023年8月疫情恢复
  • 安徽六安旅游必去十大景点东莞百度推广优化排名