力扣18. 四数之和
题目来源:https://leetcode.cn/problems/4sum/description/
C++题解:第一次尝试,数组排序后,分别从两端各自往里走,单个样例都能通过,但是超时
class Solution {
public:vector<vector<int>> fourSum(vector<int>& nums, int target) {sort(nums.begin(),nums.end());int len = nums.size();int iii,jjj;vector<vector<int>> daan;for(int ii = 0; ii < len-3; ii++){if(nums[ii] > 250000000) break;for(int jj = len-1; jj > ii+2; jj--){if(nums[jj] < -250000000) break;for(int kk = ii+1; kk < jj-1; kk++){if(nums[ii] + nums[jj] + nums[kk] > 1000000000) break;for(int ll = jj-1; ll > kk; ll--){if(nums[ii] + nums[jj] + nums[kk] + nums[ll] == target) {daan.push_back({nums[ii], nums[kk], nums[ll], nums[jj]});//cout<<ii << kk << ll <<jj<<endl;break;}if(nums[ii] + nums[jj] + nums[kk] + nums[ll] < target) break;}while((nums[kk+1] == nums[kk])&&(kk+1 < jj-1)) kk++;}while((nums[jj] == nums[jj-1])&&(jj-1 > ii+2)) jj--;}while((nums[ii+1] == nums[ii])&&(ii+1 < len-3)) ii++;}return daan;}
};
第一次遇到测试用例全部通过但是超时的情况
将第四个数的位置定位成二分查找。对一些超出int的范围的情况做一些限制
class Solution {
public:vector<vector<int>> fourSum(vector<int>& nums, int target) {sort(nums.begin(),nums.end());int len = nums.size();int jjj,kkk,ll;vector<vector<int>> daan;for(int ii = 0; ii < len-3; ii++){if(nums[ii] > 250000000) break;for(int jj = len-1; jj > ii+2; jj--){if(nums[jj] < -250000000) break;for(int kk = ii+1; kk < jj-1; kk++){if(nums[ii] + nums[jj] + nums[kk] > 1000000000) break;kkk = kk; jjj = jj;ll = floor((kkk+jjj)/2);while(ll!=kkk){if((nums[kk]/2 + nums[ll]/2 + nums[jj]/2 < -500000000)or(nums[ii] + nums[jj] + nums[kk] + nums[ll] > target)){jjj = ll;ll = floor((kkk+jjj)/2);}else if((nums[kk]/2 + nums[ll]/2 + nums[jj]/2 > 500000000)or(nums[ii] + nums[jj] + nums[kk] + nums[ll] < target)){kkk = ll;ll = floor((kkk+jjj)/2);}else{ //相等的情况daan.push_back({nums[ii], nums[kk], nums[ll], nums[jj]});break;}}while((nums[kk+1] == nums[kk])&&(kk+1 < jj-1)) kk++;}while((nums[jj] == nums[jj-1])&&(jj-1 > ii+2)) jj--;}while((nums[ii+1] == nums[ii])&&(ii+1 < len-3)) ii++;}return daan;}
};
力扣18. 四数之和相关推荐
- 力扣18. 四数之和(JavaScript)
建立四个指针 四数之和的双指针解法是两层for循环nums[k] + nums[i]为确定值,依然是循环内有left和right下标作为双指针,找出nums[k] + nums[i] + nums[l ...
- 代码随想录算法训练营15期 Day7 | 454.四数相加II、 383. 赎金信 、15. 三数之和、18. 四数之和
目录 力扣 454.四数相加II 题解:哈希表-map-unordered_map 力扣 383.赎金信 题解1:暴力解法 题解2:哈希表--数组 力扣 454.四数相加II 题目: 给你四个整数数组 ...
- (补)算法训练第七天|力扣454.四数相加II ,383. 赎金信,15. 三数之和,18. 四数之和
代码随想录算法训练营第七天|力扣454.四数相加II ,383. 赎金信,15. 三数之和,18. 四数之和 454.四数相加II 题目链接:四数相加II 参考:https://programmerc ...
- 代码随想录算法训练营第六天|454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和。
代码随想录算法训练营第六天|454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和. 454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和 454.四数相加I ...
- 代码随想录算法训练营第7天|454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和
454.四数相加II 力扣题目链接 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i]+B[j]+C[k]+D[l] = 0. 为了 ...
- 代码随想录算法训练营15期 Day 7 | 454.四数相加II 、 383. 赎金信 、15. 三数之和 、18. 四数之和
昨天看了一下别的东西,导致昨天没有练习打卡,今天补上昨天的学习知识. 454.四数相加II 建议:本题是 使用map 巧妙解决的问题,好好体会一下 哈希法 如何提高程序执行效率,降低时间复杂度,当然使 ...
- 代码随想录算法训练营第七天|454.四数相加II 、 383. 赎金信 、15. 三数之和、18. 四数之和
454.四数相加II 给你四个整数数组 nums1.nums2.nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 <= i, j, ...
- Suzy找到实习了吗Day 7 | 哈希表结束啦 454. 四数相加 II,383. 赎金信,15. 三数之和,18. 四数之和
454. 四数相加 II(dict hash) 题目 给你四个整数数组 nums1.nums2.nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足 ...
- 代码随想录算法训练营第七天| 哈希表理论基础 ,454.四数相加II, 383. 赎金信, 15. 三数之和, 18. 四数之和
代码随想录算法训练营第七天| 哈希表理论基础 ,454.四数相加II, 383. 赎金信, 15. 三数之和, 18. 四数之和 454.四数相加II 建议:本题是 使用map 巧妙解决的问题,好好体 ...
最新文章
- Vue项目自动转换 px 为 rem,高保真还原设计图
- 动手完善个性化弹出提示框的过程及乐趣
- 近期window7x64 打补丁之后IE11x64无法启动
- iOS native集成Weex js文件 不显示提示框问题
- rabbitmq常用的五种模型
- 将Java EE Monolith雕刻成微服务
- CSS Hack 汇总快查
- 我的react组件化开发道路(二) 分页 组件开发
- Linux的一些简单命令操作
- docker 配置selenium调用Firefox无界面浏览器
- Python入门教程丨1300多行代码,让你轻松掌握基础知识点
- PerfMap – 显示前端网站性能的热力图插件
- java 反射 接口工具类_Java 反射工具类 ReflectionUtils
- Laravel关联模型中过滤结果为空的结果集(has和with区别)
- XY相互独立,且服从指数分布,求U=max(X,Y)和V=min(X,Y)的概率密度函数
- RANSAC算法拟合平面实现
- 数字签名和数字证书的区别与联系
- 40 岁的时候,我转行成为一名前端开发者!
- RocketMQ Message相关命令【实战笔记】
- 个人开发者的项目如何接入支付宝登录功能(保姆级教学)(Java的后台为例,其他语言类似)
热门文章
- Intel Turbo Boost (睿频)技术简介
- 小米手环模拟门禁卡读卡失败_工作生活好帮手 篇一:小米note3模拟门禁卡 你该不该知道的可能都在这里_安卓手机...
- 【2023秋招面经】4399 前端 一面-部门初面(26min)
- 【洛谷4735】 最大异或和(可持久化01Trie)
- java打字游戏课程设计_Java课程设计打字游戏.docx
- 如何用手机打印文件?手机中存储的文档怎么打印
- java课程 数独 文库_JAVA课程设计九宫格数独.pdf
- 五招教你做好企业年终绩效考核,太实用了!
- 大数据培训课程数据清洗案例实操-简单解析版
- 孙剑:如何打造云、端、芯上的视觉计算 | CCF-GAIR 2018