首页 > 编程语言 >每日算法--2023.3.1

每日算法--2023.3.1

时间:2023-03-01 15:01:08浏览次数:33  
标签:-- Solution class 2023.3 int 算法 length public

1.剑指offer47 --礼物的最大价值

class Solution {
    public int maxValue(int[][] grid) {
        int m = grid.length, n = grid[0].length;
        int[][] dp = new int[m+1][n+1];
        for(int i = 0;i<=m;i++){
            dp[i][0] = 0;
        }
        for(int j = 0;j<=n;j++){
            dp[0][j] = 0;
        }
        for(int i = 1;i<=m;i++){
            for(int j = 1;j<=n;j++){
                dp[i][j] = Math.max(dp[i-1][j], dp[i][j-1]) + grid[i-1][j-1];
            }
        }
        return dp[m][n];
    }
}

2.剑指offer48--最长不含重复字符的子字符串

class Solution {
    public int lengthOfLongestSubstring(String s) {
        HashSet<Character> set= new HashSet<>();
        int n = s.length();
        int res = 0;
        for(int i = 0, j = 0;j<n;j++){
            while(!set.isEmpty()&&set.contains(s.charAt(j))){
                set.remove(s.charAt(i));
                i++;
            }
            set.add(s.charAt(j));
            //System.out.println(set.size());
            res = Math.max(res,set.size());
        }
        return res;
    }
}

3.剑指offer60--n个骰子的点数

class Solution {
    //该题直接用深度优先遍历,时间复杂度是6的n次方,可以用动态规划来优化
    //假设有四个骰子,当想要遍历到和为4与6时
    //计算和为4,可以计算前三个和为1,2,3
    //计算和为6,也需要计算前三个和为1,2,3
    //所以可以用动态规划的最优子结构来优化
    public double[] dicesProbability(int n) {
        int[][] dp = new int[12][70];
        for(int i = 1;i<=6;i++){
            dp[1][i] = 1;
        } 
        for(int i = 2;i<=n;i++){
            for(int j = i;j<=6*i;j++){
                for(int k = 1;k<=6;k++){
                    if(j-k<0){
                        break;
                    }
                    dp[i][j] += dp[i-1][j-k]; 
                }
            }
        }
        int cnt = 0;
        for(int i = n;i<=6*n;i++){
            cnt += dp[n][i];
        }
        double[] res = new double[5*n+1];
        for(int i = n;i<=6*n;i++){
            res[i-n] = dp[n][i]/(cnt*1.0); 
        }
        return res;

    }
}

4.剑指offer63--股票的最大利润

class Solution {
    public int maxProfit(int[] prices) {
        int min = 0x3f3f3f3f, n = prices.length,res = 0;
        for(int i = 0;i<n;i++){
            min = Math.min(min,prices[i]);
            res =Math.max(res,prices[i] - min);
            //System.out.println(res);
        }
        return res;
    }
}

  

  

  

  

标签:--,Solution,class,2023.3,int,算法,length,public
From: https://www.cnblogs.com/lyjps/p/17168170.html

相关文章

  • 调用接口获得token_Postman篇--如何进行参数关联
    具体操作如下:1、点击右上角的小眼睛,在弹出的页面中输入环境变量名称对于需要关联获得的token值,初始值不填2.如下接口能够获取到token,在Tests中获取请求值,输入以下代码(......
  • DockQuery 天狼 v1.2.0 正式发布
    DockQuery天狼经过2022年的孵化,于2022年年底发布了第一个版本。在春回大地万象更新之际,DockQuery发布了1.2.0版本,也是我们公开招募第一批产品体验官的版本。在这个......
  • 活动目录(Active Directory)批量用户管理
    在大型复杂的Windows网络中,批量管理AD用户可能是一项挑战。此外,使用本机工具和PowerShell脚本需要深入了解AD和脚本,才能在AD中完成批量用户管理。ADManagerPlus......
  • QuartZ
    Quartz.NET是一个强大、开源、轻量级的任务调度框架。任务调度在我们的开发中经常遇到,如说:每天晚上三点让程序或网站执行某些代码,或者每隔5秒种执行一个方法等。Windows......
  • Servlet-(跳转)表单,超链接,转发,重定向
    在制作网页时,我们常用到按钮跳转或者超链接跳转,这时候就用到表单提交或超链接先说表单,我们可以只有一个提交按钮,也可以在其中添加隐藏表单,就像这样"<formid=\"form1\"......
  • TPS7B8733QKVURQ1 40V低压稳压器,REF4132B25DBVR功能框图 汽车类应用
    TPS7B8733QKVURQ140V低压差稳压器说明:TPS7B87-Q140V低压差稳压器设计用于连接汽车应用中的电池。TPS7B87-Q1的输入电压范围可扩展至40V,因此该器件可承受汽车系统中预计可......
  • Go special function
    initfunctioninit函数用来进行初始化,在每一个源文件里面的代码,init函数最开始执行init函数没有参数,同时也没有返回值anonymousfunction匿名函数,和javascript和dart......
  • model checkpoint
    Amodelcheckpointisasavedcopyofthetrainedweightsandbiasesofaneuralnetworkmodelataspecificpointintimeduringthetrainingprocess.Itcan......
  • Genymotion启动失败
    今天安装了SDK,Genymotion电脑是Win10的,Genymotion 下载是的3.3.2的版本,VirtualBox下载的是7.0.4的版本随便下载了个GoogleNexus5X,一直启动失败搜了一轮启动失败......
  • Typora学习教程
    Typora教程一.Typora介绍什么是TyporaTypora,被称为世界上最漂亮的写作App。他是一个多功能的Markdown编辑器,可以将它用来日常记笔记或写日记。Typora的界面简洁,没有Wi......