首页 > 编程语言 >算法--2023.1.26

算法--2023.1.26

时间:2023-01-26 21:22:14浏览次数:43  
标签:26 背包 -- res int 2023.1 new public

1.力扣338--比特位计数

class Solution {
    public int[] countBits(int n) {
        //关键在于找到递推公式
        int[] res = new int[n+1]; 
        for(int i = 1;i<=n;i++){
            res[i] = res[i>>1] + (i&1);
        }
        return res;
    }
}

2.力扣347--前k个高频元素

class Solution {
    public int[] topKFrequent(int[] nums, int k) {
        HashMap<Integer,Integer> map = new HashMap<>();
        int n = nums.length;
        //hashmap记录每个元素出现的次数
        for(int i = 0;i<n;i++){
            map.put(nums[i],map.getOrDefault(nums[i],0)+1);
        }
        //这里新建一个数组,通过计数排序找到前k多的次数最少是多少次--i
        int[] cnt = new int[n+1];
        for(int key : map.keySet()){
            cnt[map.get(key)]++;
        }
        int t = 0,i = n;
        for(;i>=0&&t<k;i--){
            while(cnt[i]!=0){
                cnt[i]--;
                t++;
            }
        }
        int[] res = new int[k];
        int tt = 0; 
        //然后在遍历一次hashmap,其中出现次数比i大的都是我们的结果
        for(int key : map.keySet()){
            if(map.get(key)>i){
                res[tt++] = key;
            }
        }
        return res;
    }
}

3.acwing4--多重背包问题1

import java.util.Scanner;

public class acwing4 {
//01背包问题和完全背包问题可以优化位一维dp,01背包问题从后往前,完全背包问题从前往后,多重背包问题,因为每个物品种类数量有具体限制,所以必须用二维dp,在最后一层选取物品的数量 public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(), capicity = in.nextInt(); int[] nums1 = new int[n+1], nums2 = new int[n+1], nums3 = new int[n+1]; for(int i = 1;i<=n;i++){ nums1[i] = in.nextInt(); nums2[i] = in.nextInt(); nums3[i] = in.nextInt(); } int[][] dp = new int[n+1][capicity+1]; for(int i = 1;i<=n;i++){ for(int j = 1;j<=capicity;j++){ for(int k = 0;k<=nums3[i]&&nums1[i]*k<=j;k++){ dp[i][j] = Math.max(dp[i][j],dp[i-1][j-nums1[i]*k] + nums2[i]*k); } } } System.out.println(dp[n-1][capicity]); } }

  

 

  

标签:26,背包,--,res,int,2023.1,new,public
From: https://www.cnblogs.com/lyjps/p/17068230.html

相关文章

  • 超越摩尔的EDA软件四大金刚
    EDA软件四大金刚 芯片进入大规模生产之前,需要进行“试生产”,也就是流片,对完成的设计电路先生产几片、几十片。流片是一个极其昂贵的过程。 在14纳米制程的时代,流片一......
  • Codeforces Round #846 (Div. 2) E. Josuke and Complete Graph(数论分块)
    题意:给定一个区间[L,R],求其中任意两个数字的gcd的不同的种类总数。链接:https://codeforces.com/contest/1780/problem/E其中L<=1e9,1<=L<=R<=1e18。tips:本篇题解中除标......
  • TypeScript readonly props All In One
    TypeScriptreadonlypropsAllInOneTS绕过readonly限制readonlypropertiesinterfacePerson{name:string;age:number;}interfaceReadonlyPerson{......
  • m扩频通信系统在瑞利信道中的误码率性能matlab仿真
    1.算法描述   本课题,我们主要涉及到两个理论要点,第一个是瑞利衰落条件,第二个是扩频通信。下面分别对这两个理论进行介绍:        第一个是瑞利衰落条件:  ......
  • java基于ssm开发的宠物商城宠物店源码
    简介关于宠物的商店,首页,搜索商品,详情页,可选择尺寸,衣服颜色,根据不同规格显示不同的商品价格,加入购物车,立即购买,评价列表展示,商品详情展示,商品评分,分类商品,标签查询,更多分类......
  • 所有类型的Class对象
       ......
  • 使用Backup Vault进行Disk备份
    Backup是每个云都必不可少的服务,Azure中的backup服务其实远不止一种,很多时候可能并不一定能很轻松的知道每种场景使用哪种备份服务比较合适,我也计划多写几篇来介绍这些备份......
  • m扩频通信系统在瑞利信道中的误码率性能matlab仿真
    1.算法描述本课题,我们主要涉及到两个理论要点,第一个是瑞利衰落条件,第二个是扩频通信。下面分别对这两个理论进行介绍:第一个是瑞利衰落条件:第二个是扩频通信:我们......
  • Markdown学习笔记
    Markdown语法标题#一级标题##二级标题###三级标题...以此类推字体**粗体***斜体****粗斜体***~~删除线~~引用>引用例:引用图片![图片名](图片地址)......
  • CentOS7.9 全自动装docker:v1
    命令(直接复制执行即可):servicefirewalldstopsystemctldisablefirewalld.servicesetenforce0sed-i's/SELINUX=enforcing/SELINUX=disabled/g'/etc/selinux/configyu......