zoukankan      html  css  js  c++  java
  • leetcode面试题 17.16. 按摩师

    leetcode面试题 17.16. 按摩师

    又一道动态规划题目

    动态规划的核心就是总结出一个通行的方程.

    但是这道题似乎不太适合使用递归的方式.

    所以使用for循环遍历数组.

    class Solution {
        public int massage(int[] nums) {
            if(nums.length==0)return 0;
            if (nums.length==1)return nums[0];
            //动态规划,这个采用了分类讨论的思想
            //[2,7,9,3,1]为例
            //如果你在7的位置上.有两种情况1.工作2.不工作
            //于是用数组表示就是len[i][1]与len[i][0]
            //这个二维数组的值记录经过的路径的总值
            int [][] len=new int[nums.length][2];
            len[0][0]=0;
            len[0][1]=nums[0];
            //遍历这个数组,用二维数组的值作为记录
            for(int i=1;i<=nums.length-1;i++){
                //假如你在9位置上
                //len[i][0]代表你不工作
                //有两种可能1.昨天你工作了2.昨天你不工作
                //那么我们只要找出两种可能中最大的一种就可以
                len[i][0]=Math.max(len[i-1][0],len[i-1][1]);
                //如果jin'tian'gong
                len[i][1]=len[i-1][0]+nums[i];
            }
            return Math.max(len[nums.length-1][0],len[nums.length-1][1]);
        }
        public static void main(String[] args) {
            Solution solution = new Solution();
            System.out.println(solution.massage(new int[]{2,7,9,3,1}));
        }
     }
    
  • 相关阅读:
    数据--第53课
    数据--第52课
    数据--第51课
    标准模板库中的优先队列(priority_queue)
    进程的定义
    进程的基本概念
    循环不变式
    插入排序
    模板声明
    标准模板库中的队列(queue)
  • 原文地址:https://www.cnblogs.com/yanzezhong/p/12561754.html
Copyright © 2011-2022 走看看