leetcode 40. Combination Sum II
来源:互联网 发布:视频剪辑制作软件电脑 编辑:程序博客网 时间:2024/06/15 09:07
leetcode 40. Combination Sum II
class Solution {public: vector<vector<int>> combinationSum2(vector<int>& candidates, int target) { vector<vector<int>> result; vector<vector<int>> tempResult = {}; vector<int> temp = {}; if (candidates.size() < 1) { return result; } sort(candidates.begin(), candidates.end()); int i = candidates.size() - 1; while (i >= 0) { temp.clear(); if (target == candidates[i]) { while ( i >= 1 && target == candidates[i-1]) { i--; } temp.push_back(target); result.push_back(temp); i--; continue; } if (i >= 1) { tempResult = combinationRangeSum(candidates, target - candidates[i], i - 1); if (tempResult.size()>0) { for (int j = 0; j < tempResult.size(); j++) { tempResult[j].push_back(candidates[i]); result.push_back(tempResult[j]); } } } i--; } map<string,bool> resultMap; string tempNew; map<string,bool>::iterator it; vector<vector<int>> uniqueResult; vector<int> tempNewResult = {}; for(int i = 0;i<result.size();i++){ tempNew = ""; tempNewResult = {}; for(int j = 0;j<result[i].size();j++){ tempNew += string(1,(result[i][j] + '0'))+"+"; tempNewResult.push_back(result[i][j]); } it = resultMap.find(tempNew); if(it==resultMap.end()){ resultMap[tempNew] = true; uniqueResult.push_back(tempNewResult); } } return uniqueResult; } vector<vector<int>> combinationRangeSum(vector<int>& nums, int target, int right) { double pos = binarySearchPos(nums, target, 0, right); vector<vector<int>> result = {}; vector<vector<int>> tempResult = {}; vector<int> temp = {}; if (pos - floor(pos)<0.4) { temp.push_back(nums[floor(pos)]); result.push_back(temp); } int i = floor(pos); if (i == -1 || ceil(i) == right + 1) return{}; while (i >= 1 && target == nums[i]) { i--; } while (i >= 1) { tempResult = combinationRangeSum(nums, target - nums[i], i - 1); if (tempResult.size()>0) { for (int j = 0; j < tempResult.size(); j++) { tempResult[j].push_back(nums[i]); result.push_back(tempResult[j]); } } i--; } return result; } double binarySearchPos(vector<int>& nums1, double num, int start, int end) { int left = start, right = end, medium = 0; while (left<right) { medium = left + (right - left) / 2; if (nums1[medium] - num >0.4) { right = medium; } else if (num - nums1[medium] >0.4) { left = medium + 1; } else { return medium; } } double left1; if (nums1[left] - num<0.4 && num - nums1[left] <0.4) left1 = left; else if (nums1[left] - num>0.4) { left1 = left - 0.5; } else { left1 = left + 0.5; } return left1; }};
阅读全文
0 0
- [LeetCode]40.Combination Sum II
- LeetCode --- 40. Combination Sum II
- LeetCode 40.Combination Sum II
- [Leetcode] 40. Combination Sum II
- LeetCode 40. Combination Sum II
- [leetcode] 40. Combination Sum II
- 40. Combination Sum II LeetCode
- leetcode 40. Combination Sum II
- Leetcode 40. Combination Sum II
- LeetCode 40. Combination Sum II
- leetcode 40. Combination Sum II
- LeetCode 40. Combination Sum II
- LeetCode 40. Combination Sum II
- LeetCode *** 40. Combination Sum II
- 【LeetCode】40. Combination Sum II
- leetcode 40. Combination Sum II
- LeetCode - 40. Combination Sum II
- [LeetCode] 40. Combination Sum II
- 100以内 素数
- 软键盘弹出影响webapp中固定定位的问题
- Lamda Expressions
- java 项目连接mysql 数据库
- $.extend()和$.fn.extend()
- leetcode 40. Combination Sum II
- LeetCode||60. Permutation Sequence
- 1+2+3+4+5+6+7+8+9+10
- Android--Glide图片加载框架的基本使用与介绍
- Java实现大数据简单运算
- Cookie保存用户访问网页的时间(七)
- 虚拟机黑屏,日志文件vmware显示DictionaryLoad: Cannot open file "C:\Users\weihy\AppData\Roaming\VMware\config.ini
- MySQL 聚簇索引和聚簇索引(二级索引)
- Java基础02 方法与数据成员