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

wordpress加载条插件武汉seo工作室

wordpress加载条插件,武汉seo工作室,华为300mbps无线扩展器设置网站,企业做网站分一般为哪几种类型本题是扩展题,真实考过,看这个题之前先看一下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.hrbkazy.com/news/2177.html

相关文章:

  • 上海可靠的网站建设公司网上销售
  • 微信上的网站怎么做中国网站排名前100
  • 济南靠谱做网站公司高平网站优化公司
  • 上海的网站设计公司价格深圳网络营销运营
  • 做期货关注网站今日重大新闻事件
  • 专业网站开发多少钱厦门人才网唯一官方网站登录入口
  • 做网站应该选择怎样的公司沈阳百度seo关键词排名优化软件
  • 最真实的招聘网站网站seo视频
  • 怀远县建设局门户网站郑州网络推广平台
  • 自己做网站开微店可行吗小红书推广平台
  • 网站建设制作深圳深圳seo优化推广
  • 公司网站制作天强科技站长工具四叶草
  • 上海高端网站建设公外贸营销型网站制作
  • 美容视频视频网站建设软文世界平台
  • wordpress+授权登录win10系统优化软件哪个好
  • 中建交通建设集团有限公司网站济南网站建设老威
  • 在百度做网站推广怎么做百度识图在线入口
  • 如何快速推广一个网站网站流量排名查询工具
  • 用记事本做网站缺少body2345网址导航主页
  • 打电话沟通做网站话术上海app网络推广公司
  • 网站建设资料 优帮云短视频营销的特点
  • 唯品会一家专做特卖的网站百度精准搜索
  • 商丘市做网站潍坊做网站哪家好
  • 深圳专业网站建设公司排名百度seo推广方案
  • phpweb手机网站程序推广有什么好方法
  • 湖北公司响应式网站建设推荐seo推广专员招聘
  • 网站数据建设涉及哪些内容中国最新军事新闻最新消息
  • 电子商务网站建设与管理百度广告投放
  • 微商怎么做 和淘宝网站一样吗网页搜索引擎
  • 做同城购物网站有什么优势吗厦门网络推广哪家强