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

网站运营培训学校建设众筹类网站

网站运营培训学校,建设众筹类网站,js多久可以做网站,北京博洛尼装饰公司454.四数相加II 454.四数相加II介绍给你四个整数数组 nums1、nums2、nums3 和 nums4 #xff0c;数组长度都是 n #xff0c;请你计算有多少个元组 (i, j, k, l) 能满足#xff1a;思路因为是存放在数组里不同位置的元素#xff0c;因此不需要考虑去重的操作#xff0c;而…454.四数相加II 454.四数相加II介绍给你四个整数数组 nums1、nums2、nums3 和 nums4 数组长度都是 n 请你计算有多少个元组 (i, j, k, l) 能满足思路因为是存放在数组里不同位置的元素因此不需要考虑去重的操作而四数之和是在一个数组里找出四个元素相加。在一个集合里判断一个元素有没有出现过需要考虑使用哈希法。首先遍历A和B数组把两个数组中的值ab放入到一个集合里。然后再遍历C和D数组去判断集合中有没有想要的元素【-cd】使用怎样的哈希结构若使用数组做哈希结构而n可能很大不妥。我们不光要统计ab还要统计ab出现过的次数因此可以使用map。若-(cd)等于map中的key值时计数就是()value次。AB中有3个等于-(cd)的abunordered_map(int,int) map; for(i0;in;i){//Afor(j0;jn;j){//Bmap[ab];//c中是如果key值ab有的话直接就value,没有的话将ab insert到map中同时value} } for(c:C){for(d:D){target 0-(cd);if(map.find(target)!map.end()) //如果map中找到了targetcount count map[target];//map中Key所对应的数值} } return count;代码class Solution { public:int fourSumCount(vectorint nums1, vectorint nums2, vectorint nums3, vectorint nums4) {std:unordered_mapint,int map;int count 0;for(int i:nums1){for(int j:nums2){map[ij];}}for(int i:nums3){for(int j:nums4){int target -(ij);if(map.find(target)!map.end());{count countmap[target];}}}return count;}};383. 赎金信383.赎金信介绍给你两个字符串ransomNote 和 magazine 判断 ransomNote 能不能由 magazine 里面的字符构成。如果可以返回 true 否则返回 false 。magazine 中的每个字符只能在 ransomNote 中使用一次。思路该题目说明是—为了不暴露赎金信字迹要从杂志上搜索各个需要的字母组成单词来表达意思。杂志字符串中的每个字符只能在赎金信字符串中使用一次。可以仿照昨天的思路先将magazine中的字符逐个遍历送入到数组中数组中的值就是每个字符的个数。然后再遍历ransom中的字符如果在数组中对应位置的值不为0说明magazine中有ransom中遍历到当前位置的字符那么则将数组中的值--。代码class Solution { public:bool canConstruct(string ransomNote, string magazine) {int record[26] {0};if(ransomNote.size()magazine.size()){return false;}for(int i0;imagazine.size();i){record[magazine[i]-a];}for(int j0;jransomNote.size();j){if(record[ransomNote[j]-a]0) return false;else{record[ransomNote[j]-a]--;}}return true;} };15. 三数之和15.三数之和介绍思路使用哈希法较为复杂因为需要去重。使用双指针法来求解该题。首先要对数组进行排序该题返回的是数组中的值而不是下标因此可以排序。首先固定ileft在i右边right在最右边。若nums[i]nums[left]nums[right]0说明值是大的那么让right左移一位。right--若nums[i]nums[left]nums[right]0说明值是小的那么让left右移一位。left若nums[i]nums[left]nums[right]0获得结果nums[i]nums[left]nums[right]细节去重result sort(nums) //abc for(i0;inums.size();i){if(nums[i]0)    return;if(i0nums[i]nums[i-1]) //对a进行去重conitue;left i1;right nums.size()-1while(rightleft){if(nums[i]nums[left]nums[right]0) right--;else if(nums[i]nums[left]nums[right]0) left;else {result.push(nums[i]nums[left]nums[right])//至少收获1个符合条件的再对b和c去重if(right left nums[right] nums[right - 1]) right--; if(right left nums[left] nums[left 1]) left;}}   }代码class Solution { public:vectorvectorint threeSum(vectorint nums) {vectorvectorint result;sort(nums.begin(),nums.end());for(int i0;inums.size();i){if(nums[i]0) {return result;}if(i0nums[i]nums[i-1]) {continue;}int left i1;int right nums.size()-1;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(vectorint{nums[i],nums[left],nums[right]});while(right left nums[right] nums[right - 1]){right--; }while(right left nums[left] nums[left 1]){left;} }}}return result;} };18. 四数之和 18.四数之和介绍给你一个由 n 个整数组成的数组 nums 和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] 若两个四元组元素一一对应则认为两个四元组重复0 a, b, c, d na、b、c 和 d 互不相同nums[a] nums[b] nums[c] nums[d] target思路延续了三数之和的思路。两层for循环中一个是nums[k]一个是nums[i]仍然使得left和right互相靠近。//nums[k]nums[i]nums[left]nums[right] target for(k0;){if(nums[k]targetnums[k]0target0) break;//对nums[k]剪枝if(k0 nums[k]nums[k-1]) countinue;对nums[k]去重for(ik1;){if(nums[k]nums[i]targetnums[k]nums[i]0target0) break;//对nums[k]nums[i]剪枝//对nums[i]去重if(ik1nums[i]nums[i-1]) {continue;}//同三数之和逻辑....}}代码class Solution { public:vectorvectorint fourSum(vectorint nums, int target) {vectorvectorint result;sort(nums.begin(), nums.end());for (int k 0; k nums.size(); k) {// 剪枝处理if (nums[k] target nums[k] 0) {break; // 这里使用break统一通过最后的return返回}// 对nums[k]去重if (k 0 nums[k] nums[k - 1]) {continue;}for (int i k 1; i nums.size(); i) {// 2级剪枝处理if (nums[k] nums[i] target nums[k] nums[i] 0) {break;}// 对nums[i]去重if (i k 1 nums[i] nums[i - 1]) {continue;}int left i 1;int right nums.size() - 1;while (right left) {// nums[k] nums[i] nums[left] nums[right] target 会溢出if ((long) nums[k] nums[i] nums[left] nums[right] target) {right--;// nums[k] nums[i] nums[left] nums[right] target 会溢出} else if ((long) nums[k] nums[i] nums[left] nums[right] target) {left;} else {result.push_back(vectorint{nums[k], nums[i], nums[left], nums[right]});// 对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;} };
http://www.hkea.cn/news/14437932/

相关文章:

  • 甘肃省建设厅质量投诉网站wordpress写文章显示乱码
  • 南宁网站推广方案如何做怎么制定网站
  • 镇江建网站公司取名三个字推荐
  • 具有设计感的网站seo深度优化公司
  • 如何在后台做网站分页哪个网站做婚礼邀请函好
  • 做设计找图有哪些网站专业定制网站需要什么技能
  • 做图网站有哪些东西全国电子商务公共服务网
  • 整形网站开发外国平面设计网站
  • 网站美工效果图怎么做网络服务器的价格
  • 那个平台的网页游戏好玩南宁seo教程
  • 类似直播平台网站的建设费用企业网站配色
  • 怎么添加网站内锚点高端的佛山网站建设价格
  • 重庆御临建筑公司官网wordpress 4.9优化
  • 平顶山市哪里有做网站的广州网站关键排名
  • 怎样做能直接上传微信的视频网站哪家代理注册公司好
  • 昆明做网站的张雪峰对市场营销专业的建议
  • 爱站网官网查询域名跳转链接
  • js与asp.net做的网站wordpress侧边栏作者
  • 企业网站适合响应式嘛广州网站建设优化
  • 贵州网站建设系统自己做网站麻烦吗
  • 代刷网站搭建教程北京东城网站建设
  • 如何攻击Wordpress站点谷歌网站提交入口
  • c 做游戏的网站教学教育网站制作定制
  • 网站 昆明网站建设管理总结
  • 商品展示网站源码合肥站建设
  • 鼎湖网站建设公司优秀网页设计作品分析ppt
  • seo优化网站建设张戈博客wordpress主题
  • 网站建设怎么挣钱国内主机wordpress
  • 广告设计学的是什么成都关键词优化技术
  • 南通制作网站高埗东莞微信网站建设