博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java之 ------------[LeetCode] House Robber 打家劫舍
阅读量:6832 次
发布时间:2019-06-26

本文共 881 字,大约阅读时间需要 2 分钟。

刚开始做这一道题感觉卧槽,这不简单吗,直接去把数组下标和2取余的数相加再把剩下的数相加,比较这两个和谁大就输出谁,不就行了,但是啊,我操,事实证明,我还是太天真了,我操出现[2,1,1,2]这种情况,我当时还怀疑为什么那么简单后来一想,我操,这不是动态规划吗,于是乎,恶补一下怎么实现动态规划的,说白了,动态规划就是把大的数据拆成小的数据,如我想计算f(10),我就要计算出f(9)+1,然后我想计算出f(9)=f(8)+1,递推的方式直到f(1)=f(0)+1,就结束了。就是上面的结果依赖与下边的结果。

/* 注意这里的返回值,你一定在疑惑为什么返回值,返回的是arry.length-1,那是因为我刚开始计算的时候*  就涉及到前三个数字,如果返回arry.length,那么会报越界异常。*  其实啊,说白了,就是【表情】那个对一个数组的递推,只不过借助一个空的数组来实现*  前期给【表情】【表情】这个空的数组赋初值,这里是两个,借助的这个数组就前两个是有值的,其它没值* */public int leastPath(int[] arry) {    int length = arry.length;    // 声明一个空的数组,就是为了递推做准备    int[] another = new int[arry.length];    if (length == 0) {        return 0;    }    if (length == 1) {        return arry[0];    }    int many = Math.max(arry[0],arry[1]);    if (length == 2) {        return many;    }    // 设置要进行递推的初值    another[0] = arry[0];    another[1] = many;    // 注意这里的another.length,的设置,注意长度和下标的区别    for (int i = 2; i 

转载地址:http://iqnkl.baihongyu.com/

你可能感兴趣的文章
linux磁盘管理
查看>>
索骥馆-走向世界之《用美国小孩的方法学英文动词》扫描版[PDF]
查看>>
Android之基于XMPP协议即时通讯软件(三)
查看>>
对SEO网站优化使用技巧的总结
查看>>
yolov3 darknet:parser.c:315: failed
查看>>
网络MSDTC(分布式事务处理协调器)服务配置方法
查看>>
函数嵌套(c++)
查看>>
MySQL线程共享内存参数
查看>>
线上部署链路聚合bonding
查看>>
mysqlsla日志分析工具
查看>>
linux 制作BT种子并获取BT种子信息
查看>>
Building C Projects
查看>>
iOS:XCode 4.2开始Objective-C支持ARC
查看>>
如何解决笔记本键盘的虚拟键盘问题
查看>>
dabo aui editra 三个软件(框架or应用)之间有关系
查看>>
brew使用
查看>>
Swift语言快速入门
查看>>
学LIUNX的常用英语补习
查看>>
单点登录CAS解决方案<一>:纯净CAS-Server
查看>>
linux 下配置mysql主从同步的步骤
查看>>