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

优秀金融网站设计近两年成功的网络营销案例

优秀金融网站设计,近两年成功的网络营销案例,网站源码搭建教程,国际贸易 独立网站建设一、题目解析1.不重复1.a,b,c,d互不相同2.若两个四元组元素不一一对应,则认为两个四元组不重复2.任意顺序1.四元组内元素顺序任意2.答案中四元组排列顺序任意二、算法原理解法1:排序暴力枚举利用set去重 时间复杂度为O…

一、题目解析

 1.不重复

1.a,b,c,d互不相同

2.若两个四元组元素不一一对应,则认为两个四元组不重复

2.任意顺序

1.四元组内元素顺序任意

2.答案中四元组排列顺序任意

二、算法原理

解法1:排序+暴力枚举+利用set去重 时间复杂度为O(N^4)

用4个for循环枚举,时间复杂度为0(N^4)

解法2:排序+双指针+利用set去重 时间复杂度为O(N^2)

1. 固定i,j得到nums[i]、nums[j]

2.在j后的区间内,利用两数之和找到两个数,使这两个数的和等于target-nums[i]-nums[j]

这里有个小地方需要注意,在测试样例中会出现一组数据,使target-nums[i]-nums[j]的结果超出int的存储大小,可以使用强制类型转换解决

3.对于满足条件的四元组直接insert到set容器中,完成去重操作

解法3:排序+双指针+不用set去重 时间复杂度为0(N^2)

1. 固定i,j得到nums[i]、nums[j]

2.在j后的区间内,利用两数之和找到两个数,使这两个数的和等于target-nums[i]-nums[j]

这里有个小地方需要注意,在测试样例中会出现一组数据,使target-nums[i]-nums[j]的结果超出int的存储大小,可以使用强制类型转换解决

3.通过控制left和right,使其跳过重复元素;控制i和j,使其跳过重复元素

细节问题

1.不漏

在找到一个结果后,不要停,缩小区间继续寻找

2.越界问题

在控制left、right、i和j的时候,需要注意越界问题,避免越界访问导致程序崩溃

依旧先去尝试解法2,然后再去挑战解法3,来提升自己的代码能力

三、代码示例

解法2:

vector<vector<int>> fourSum(vector<int>& nums, int target){sort(nums.begin(),nums.end());//排序set<vector<int>> s;vector<vector<int>> vv;int a = 0,b = 0,n = nums.size();int left = 0,right = 0;for(int i = 0;i<n;i++)//控制i{for(int j = i+1;j<n;j++)//控制j{a = nums[i],b = nums[j];left = j+1,right = n-1;long long aim = (long long)target - (long long)a - (long long)b;//处理超出int的情况while(left<right){int sum = nums[left]+nums[right];if(sum>aim) right--;else if(sum<aim) left++;else{s.insert({a,b,nums[left],nums[right]});//这里插入大括号会自动转化为vector<int>left++;right--;}}}}for(auto e : s)//范围for,从s中依次取元素{vv.push_back(e);//尾差到vv中}return vv;}

 

解法3:

vector<vector<int>> fourSum(vector<int>& nums, int target){sort(nums.begin(),nums.end());//排序vector<vector<int>> vv;int left = 0,right = 0,n = nums.size();//size是指nums数组元素的多少for(int i = 0;i<n;){for(int j = i+1;j<n;){left = j+1,right = n-1;long long aim = (long long)target - (long long)nums[i] - (long long)nums[j];//处理超过int的情况while(left<right){int sum = nums[left]+nums[right];if(sum>aim) right--;else if(sum<aim) left++;else{vv.push_back({nums[i],nums[j],nums[left],nums[right]});//转化为vector<int>left++;right--;while(left<right && nums[left] == nums[left-1]) left++;//限制范围,控制left跳过重复元素while(left<right && nums[right] == nums[right+1]) right--;//同理}}++j;//这里代替for循环++功能,所以for处为空while(j<n && nums[j] == nums[j-1]) ++j;//限制范围,跳过重复元素}++i;//同理while(i<n && nums[i] == nums[i-1]) ++i;}return vv;}
};

 

 

经过观察我们能知道,解法2虽然简单,但在时间和空间上没有解法3好。解法3虽然困难,但在时间和空间上比解法2良好。所以我们在掌握解法2的基础上,掌握解法3的去重的思路,无疑是最优解。

看到最后,如果对您有所帮助,还请点赞、关注和收藏,我们下期在见!

http://www.dtcms.com/wzjs/352489.html

相关文章:

  • 晋中市建设局网站广州seo怎么做
  • 网站制作教程贵州seo和网络推广
  • 无锡网站建设价格低seo大牛
  • 网站营销信息竞价推广账户竞价托管
  • 有些网站做不了seoseo深圳优化
  • 网页设计免费模板网站推荐百度广告投诉电话客服24小时
  • 网站排名优化多少钱什么网站都能进的浏览器
  • 江西九江永修网站建设seo研究中心怎么样
  • 深圳网站建设html5搜索引擎优化的特点
  • 店面设计餐饮搜索引擎优化的基础是什么
  • 中国建设银行账户查询平台优化
  • 政府网站集约化建设安全2023近期舆情热点事件
  • 找投资项目的网站seo教程免费分享
  • 网站建设的进度安排和人员安排百度竞价推广账户
  • 做网站vs2012能不能做各城市首轮感染高峰期预测
  • 优化网站结构一般包括如何联系百度客服
  • 做免费网站教程国vs长沙县网络营销咨询
  • 名词解释 网站规划什么是百度指数
  • wordpress 名站东莞网站制作推广公司
  • 两学一做网站 苏州搜索引擎优化的定义
  • 在wordpress布置证书东莞百度网站排名优化
  • wordpress mxl-rpc服务专业网站优化培训
  • 青岛网站开发工资广州各区进一步强化
  • 赚钱网站入口网络营销推广方式都有哪些
  • 怎么做一元抽奖网站关键词排名查询工具有什么作用?
  • 网页游戏4399惠州seo整站优化
  • 一个专门做特产的网站电脑学校培训
  • 企业网站优化公司旅游网站网页设计
  • 淄博专业网站设计搜索引擎营销的典型案例
  • 网片加工机器seo网站分析工具