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

建设众筹类网站做网站的女生多么

建设众筹类网站,做网站的女生多么,为什么要做手机网站,卖产品的网站怎么做的本题是扩展题,真实考过,看这个题之前先看一下39题 Leetcode面试经典150题-39.组合总数-CSDN博客 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数…

本题是扩展题,真实考过,看这个题之前先看一下39题

Leetcode面试经典150题-39.组合总数-CSDN博客

给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。

candidates 中的每个数字在每个组合中只能使用 一次 。

注意:解集不能包含重复的组合。 

示例 1:

输入: candidates = [10,1,2,7,6,1,5], target = 8,
输出:
[
[1,1,6],
[1,2,5],
[1,7],
[2,6]
]

示例 2:

输入: candidates = [2,5,2,1,2], target = 5,
输出:
[
[1,2,2],
[5]
]

提示:

  • 1 <= candidates.length <= 100
  • 1 <= candidates[i] <= 50
  • 1 <= target <= 30

其他的就不多说了,上代码,看不懂的请留言或者私信,收到第一时间解答

class Solution {/**这个题目对比第39题难度极大吧我觉得,这哪是中等难度,百分百的hard难度这个题对比39题的不同是每个位置的数只能使用一次,但是有可能有的位置的数是重复的,而重复的集合也应该被考虑这里我的解题思路是既然有重复的数,那就过滤出一个数组放数,另外一个数组放这个数出现的频率来试试这个解法*/public List<List<Integer>> combinationSum2(int[] candidates, int target) {/**先统计词频 */Map<Integer,Integer> map = new HashMap<>();for(int num : candidates) {map.put(num, map.getOrDefault(num, 0) + 1);}/**统计完词频之后把原来的数组分为两个数组,这里我想先排序,所以这里先统计出数字数组,稍后再统计词频数组 */int[] nums = new int[map.keySet().size()];int curIndex = 0;for(int num : map.keySet()) {nums[curIndex ++] = num;}/**排个序用于剪枝*/Arrays.sort(nums);/**统计词频数组 */int[] counts = new int[nums.length];for(int i = 0; i < nums.length; i++) {counts[i] = map.get(nums[i]);}return process(nums, counts, 0, target);}public List<List<Integer>> process(int[] nums, int[] counts, int curIndex, int targetLeft) {List<List<Integer>> ans = new ArrayList<>();if(targetLeft == 0) {ans.add(new ArrayList<>());return ans;}/**如果targetLeft不为0,但是我们没有数了,失败,返回空集合 */if(curIndex == nums.length) {return ans;}/**我们是按照从小到大排序的数组,如果targetLeft已经比当前数小了也没必要继续尝试了 */if(targetLeft < nums[curIndex]) {return ans;}/**其他情况正常尝试,当前数可以尝试Math.min(count[curIndex], targetLeft/nums[curIndex])次*/for(int i = 0; i <= Math.min(counts[curIndex], targetLeft/nums[curIndex]); i++) {List<List<Integer>> next = process(nums, counts, curIndex + 1, targetLeft - i * nums[curIndex]);for(List<Integer> list : next) {/**当前数加了多少个,就加入多少个到next中的集合中,因为确实是使用了这么多个 */for(int num = 0; num < i; num ++) {list.add(nums[curIndex]);}/**加入到当前数的集合 */ans.add(list);}}return ans;}
}

http://www.yayakq.cn/news/398243/

相关文章:

  • 网络营销课程免费seo网站关键词优化价格
  • 有在网上找做网站的人么平面设计师必备网站
  • 厦门电商网站成都科盛兴网站建设有限公司
  • 兰州网站设计公司哪家最好微博营销
  • 网站建设路由器怎么设置广州市研发网站建设平台
  • 网站建设的开发方式企业网站备案名称要求
  • 网站 搭建 亚洲服务器上海装修做网站的倒闭了
  • 沈阳房地产网站开发php网站支付宝接口
  • 门户网站html厦门城乡建设局网站
  • 网页模板网站cmswordpress常用函数大全
  • 宝山宜昌网站建设贵阳建设网站公司
  • 泉州专业网站开发公司大朗镇网站建设
  • 网站设计美工要怎么做建筑装饰工程
  • 阿里云域名怎么做网站网站移动端
  • 网站建设策划书有哪些内容兰陵成都设计公司
  • Vs做的网站调试时如何适应网页网站改版 新闻
  • 做同城购物网站赚钱吗建设电商网站哪个平台比较好
  • 湖南网站开发公司想做服装电商怎么入手
  • 30分钟快速建设网站seo排名专业公司
  • 免费建设音乐网站整合营销传播方法包括
  • 宁安网站建设花瓣网是仿国外那个网站做的
  • 山东网站seo公司移动版网站开发
  • 网站的优化是什么意思wordpress页面文字首行缩进
  • 官方网站入口wordpress地图定位
  • 公共服务网站系统建设方案wordpress百度收录之自动推送设置
  • 做lgoo的网站一般有哪些松江微网站建设
  • 网站开发销售话术网站侧边 跟随 样式
  • 织梦网站名称标签莱芜金点子信息港招聘信息
  • 电脑外设网站建设论文怎样建设一个自己的网站首页
  • 做网站插背景图片如何变大泉州seo代理商