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

商城小程序哪家好南京谷歌seo

商城小程序哪家好,南京谷歌seo,免费咨询在线,网站设计公司成都15.三数之和 哈希解法&#xff1a; 用俩个for循环求出&#xff0c;所需的a和b&#xff0c;再用哈希表&#xff0c;判断剩余的那个c是否在数组 class Solution { public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>…

15.三数之和

哈希解法:

用俩个for循环求出,所需的a和b,再用哈希表,判断剩余的那个c是否在数组

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>> result;sort(nums.begin(), nums.end());// 找出a + b + c = 0// a = nums[i], b = nums[j], c = -(a + b)for (int i = 0; i < nums.size(); i++) {// 排序之后如果第一个元素已经大于零,那么不可能凑成三元组if (nums[i] > 0) {break;}if (i > 0 && nums[i] == nums[i - 1]) { //三元组元素a去重continue;}unordered_set<int> set;for (int j = i + 1; j < nums.size(); j++) {if (j > i + 2&& nums[j] == nums[j-1]&& nums[j-1] == nums[j-2]) { // 三元组元素b去重continue;}int c = 0 - (nums[i] + nums[j]);if (set.find(c) != set.end()) {result.push_back({nums[i], nums[j], c});set.erase(c);// 三元组元素c去重} else {set.insert(nums[j]);}}}return result;}
};

双指针解法:

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>> result;sort(nums.begin(),nums.end());for(int i = 0;i<nums.size();i++){if(nums[i] > 0){return result;}//i元素的去重if(i > 0&& nums[i] == nums[i-1]){continue;}int left = i + 1;int right = nums.size() - 1;//left 和 right元素的去重,相同就停止,因为要求的是三个元素,而非俩个元素while(right > left){if(nums[i] + nums[left] + nums[right] >0){right--;}else if(nums[i] + nums[left] + nums[right] < 0){left++;}else{result.push_back(vector<int>{nums[i],nums[left],nums[right]});//去重逻辑应该放在找到一个三元组之后//防止漏掉{0,0,0}这个三元组while(right>left&&nums[right] == nums[right-1]) right--;while(right>left&&nums[left] == nums[left+1]) left++;left++;right--;}}}return result;}
};

454.四数相加

class Solution {
public:int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {unordered_map <int,int> umap; //key为a和b的值,value为a和b的值出现的次数//记录,a和b and a和b出现的次数for(int a: nums1){for(int b: nums2){umap[a+b]++;//俩数的和and次数}}int count = 0;for(int c:nums3){for(int d:nums4){if(umap.find(0 - (c+d))!=umap.end()){count += umap[0-(c+d)];}}}return count;}
};

18.四数之和

class Solution {
public:vector<vector<int>> fourSum(vector<int>& nums, int target) {vector<vector<int>> result;sort(nums.begin(),nums.end());for(int k = 0;k < nums.size();k++){//剪枝 if(nums[k] > target) return result;这错误的,target不为0// 去重if(k > 0 && nums[k] == nums[k-1]){continue;}for(int i = k + 1;i < nums.size();i++){//去重if(i > k + 1 && nums[i] == nums[i-1]){continue;}int left = i + 1;int right = nums.size() - 1;while(right > left){if(nums[k] + nums[i] > target - nums[left] - nums[right]){right--;}else if(nums[k] + nums[i] < target - nums[left] - nums[right]){left++;}else{result.push_back(vector<int>{nums[k],nums[i],nums[left],nums[right]});while(right>left&&nums[right] == nums[right-1]) right--;while(right>left&&nums[left] == nums[left+1]) left++;right--;left++;}}}}return result;}
};

383,赎金,此题与求解异位字母是同种思路

class Solution {
public:bool canConstruct(string ransomNote, string magazine) {int record[26] = {0};if(ransomNote.size() > magazine.size()) return false;for(int i = 0;i < magazine.length();i++){record[magazine[i] - 'a']++;   //统计个数,映射求结果}for(int j = 0;j<ransomNote.length();j++){record[ransomNote[j] - 'a']--;}for(int i = 0;i < 26; i++){if(record[i] < 0){return false;}}return true;}
};

http://www.mmbaike.com/news/92255.html

相关文章:

  • 头像设计制作网站搜索引擎营销方法有哪些
  • 社会保险网上服务平台官网网站seo优化方法
  • 什么网站可以做医疗设备的网站在线客服系统源码
  • 个人 可以备案做分类信息网站吗外贸营销型网站制作
  • 网站建设环境分析流程优化四个方法
  • 网站开发阶段流程图广东seo网站推广代运营
  • 网站建立平台 cms网站建设介绍ppt
  • 福州做网站费用图片优化网站
  • 网站开发会计处理百度上如何做优化网站
  • 做网站公司深如何提升网站seo排名
  • 小微企业建站色盲测试图 考驾照
  • 过年做那些网站能致富正规考证培训机构
  • 搜索公众号长沙网站推广seo
  • 个人 申请域名做网站移动建站优化
  • 怎么样黑进网站后台百度网址
  • 怎么用vs2015做网站seo外包公司一般费用是多少
  • 中国哪里正在大开发大建设杭州网站优化
  • 做的不错的外贸b2c网站站长素材
  • 德惠网站人工智能培训一般多少钱
  • 轻博客网站开发哪些平台可以做推广
  • 南京开发门户网站的公司品牌网络推广方案
  • 海南省住房和城市建设厅网站站长工具seo客户端
  • 好品质自适应网站建设谷歌google浏览器
  • 手机版网站制作应用建一个自己的网站
  • 网站数据建设涉及哪些内容seo优化信
  • 比较大网站建设公司seo教程优化
  • 工程建设合同范本武汉seo推广优化
  • 网站设计建设卖网站链接
  • 遂宁网站建设公司哪家好深圳网络营销网站设计
  • 湛江网站建设公司哪个好nba总得分排行榜最新