java数据结构与算法刷题-----LeetCode213. 打家劫舍 II

150道基础算法分类总结(2022) 在刷了一部分leetcode算法题之后,想要回头系统复习一下,发现刷的比较乱,特此整理一下,方便后续二刷,主要是对各种类型算法的一个分类,以及比较典型的题目的整理。 学习说明 题目来源lettcode 参考代码是用Java写的 供自己方便学习 算法分类 1. 二叉树 树也是一种非常重要的数据结构,因为很多容器的底层都设计到树,所以树也成了面试常问的重点了。特别是二叉树及二叉搜索树的算法。 二叉树的考点 题目来源 扩展 题解参考 二叉树的遍历(递归和迭代实现) 102. 二叉树的层序遍历 阅读详情
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

很多人觉得动态规划很难,但它就是固定套路而已。其实动态规划只不过是将多余的步骤,提前放到dp数组中(就是一个数组,只不过大家都叫它dp),达到空间换时间的效果。它仅仅只是一种优化思路,因此它目前的境地和线性代数一样----虚假的难。

  1. 想想线性代数,在国外留学的学生大多数不觉得线性代数难理解。但是中国的学生学习线性代数时,完全摸不着头脑,一上来就是行列式和矩阵,根本不知道这玩意是干嘛的。
  2. 线性代数从根本上是在空间上研究向量,抽象上研究线性关系的学科。人家国外的教科书都是第一讲就帮助大家理解研究向量和线性关系。
  3. 反观国内的教材,直接把行列式搞到第一章。搞的国内的学生在学习线性代数的时候,只会觉得一知半解,觉得麻烦,完全不知道这玩意学来干什么。当苦尽甘来终于理解线性代数时干什么的时候,发现人家国外的教材第一节就把这玩意讲清楚了。你只会大骂我们国内这些教材,什么狗东西(以上是自己学完线性代数后的吐槽,我们同学无一例外都这么觉得)。

而我想告诉你,动态规划和线性代数一样,我学完了才知道,它不过就是研究空间换时间,提前将固定的重复操作规划到dp数组中,而不用暴力求解,从而让效率极大提升。

  1. 但是网上教动态规划的兄弟们,你直接给一个动态方程是怎么回事?和线性代数,一上来就教行列式和矩阵一样,纯属恶心人。我差不多做了30多道动态规划题目,才理解,动态方程只是一个步骤而已,而这已经浪费我很长时间了,我每道题都一知半解不理解,过程及其痛苦。最后只能重新做。
  2. 动态规划,一定是优先考虑重复操作与dp数组之间的关系,搞清楚后,再提出动态方程。而你们前面步骤省略了不讲,一上来给个方程,不是纯属扯淡吗?
  3. 我推荐研究动态规划题目,按5个步骤,从上到下依次来分析
  1. DP数组及下标含义
  2. 递推公式
  3. dp数组初始化
  4. 数组遍历顺序(双重循环及以上时,才考虑)
  5. dp数组打印,分析思路是否正确(相当于做完题,检查一下)

在这里插入图片描述

这道题是198题的衍生题,在198题的基础上,增加了一个条件,就是第一个房子和最后一栋房子是挨着的。如果偷了第一个房子,那么最后一个房子就不能偷。除此之外没有任何不同

可以先参考🏆LeetCode198. 打家劫舍https://blog.youkuaiyun.com/grd_java/article/details/135401880
先理解题目细节

想象这样一个场景,我们是小偷,从第一栋挨个考虑偷还是不偷(注意:不考虑后面的,只考虑当前这栋和之前的),如果偷,那就是身上已经偷了多少+这一栋能偷多少。如果不偷,那就是身上已经偷了多少就是还是多少。但是相邻的不能同时偷,主要是第一栋如果偷了,最后一栋就不能偷。

在这里插入图片描述
在这里插入图片描述

  1. 题目给我们的数组代表每个房子有多少钱,而且相邻的房子不能都偷,只能偷不相邻的。而且首尾相邻,若要偷第一栋,则最后一栋不能偷,不偷第一栋则最后一栋可以偷
  2. 例如2,3,2 这个序列,显然不触发警报的前提下(不偷相邻的)----偷第二个为能偷到的最多的钱。不可以偷第一栋和第3栋=4元,因为首尾相邻
  3. 怎么偷才能偷到最多呢?当然是保证最大获利情况下,能偷的都偷了,而且不能触发警报。
  4. 我们每个房子都单独考虑,偷还是不偷,而且只需考虑它前面的房子,因为我们要能偷的都偷
  1. 若要偷当前房子:那么,前面相邻的不能考虑,只能考虑再前面一个,也就是当前房子的金额,加上除了前面一个相邻的房子外,已经偷了多少。
  2. 若不偷当前房子:那么,前面偷了多少,到这个房子就还有多少,金额不变
解题思路
  1. 暴力求解的思想,就是回溯算法,枚举每一种情况,拿到最大值,显然会做大量无效运算。
  2. 但是如果我们预先将其存储到dp数组,就可以直接通过dp[x], 获取dp数组中指定位置x的体力花费,而不用枚举。典型的动态规划题目
动态规划思考5步曲
  1. DP数组及下标含义

我们要求出的是到了某个房子后最大情况下偷了多少钱,那么dp数组中存储的就是最大情况下偷了多少钱。要求出谁的最大情况下偷了多少。显然是到达某个房子后,那么下标就是代表现在到了哪个房子,也就是代表到了某一栋房子后的最大已偷取的金额。显然,只需要一个下标即可表示,故这道题的dp数组只需要一维数组

  1. 递推公式
  1. 由题意可知,每个房子都可以选择偷与不偷,选择最大值。而我们选择要偷的第一个房子肯定要偷它,才能获得最大值。而第二个房子,因为它前面没有不相邻的房子,所以它要么不偷,也就是只偷第一个房子。要么选择偷第二个房子,而第一个房子不偷,然后选择最大情况。

故:第一个房子固定为F(start) = 第一个房子金额。第二个固定为F(start+1) = max(第一个房子金额,第二个房子金额)

请注意:上面说的第一个房子,是相对于小偷来说,他偷的第一个房子。例如整个街区中,我们不偷第一栋,那么就从第二栋开始偷。对于小偷来说,这第二栋就是他偷的第一个房子,记为start.

  1. 之后每一栋,都需要判断它偷还是不偷,以及前面不相邻的房子。如果偷,就要考虑前面不相邻的+自己这栋能偷多少钱。不偷,那么前一栋相邻的它肯定考虑一下。而前面的房子怎么考虑的是前面房子的事,它们也考虑过了偷还是不偷。我们只考虑当前这栋是偷,还是不偷
  2. 因此,可以得到,从第三栋开始(相对于小偷来说),递推公式为偷或者不偷,选择最大值: F(n) = max( F(n-2)+nums[n] , F(n-1) )
  1. dp数组初始化

在这里插入图片描述

  1. 数组遍历顺序(因为这个数列是一维的,只需要一重循环,无需考虑这个)
  2. 打印dp数组(自己生成dp数组后,将dp数组输出看看,是否和自己预想的一样。)

在这里插入图片描述

代码:时间复杂度O(n).空间复杂度O(n)

在这里插入图片描述

class Solution {
    public int rob(int[] nums) {
        int length = nums.length;//房子的数量
        if(length == 1) return nums[0];//如果只有一栋,那么肯定偷它,返回即可
        else if (length == 2) return Math.max(nums[0],nums[1]);//如果只有两栋,那么相邻的不能偷,只能选一栋钱多的
        //如果房子很多,那么分为两种情况①:第一栋要偷,最后一栋不能偷。②:第一栋不偷,最后一栋可以偷
        return Math.max(robRange(nums,0,length-2), robRange(nums,1,length-1));
    }
    public int robRange(int[] nums, int start, int end){
        /**进入小偷视角,他第一个偷的房子start,为他眼里的第一栋。 而实际在街区可能是第一栋,也可能是第二栋**/
        int dp[] = new int [nums.length];//dp数组
        dp[start] = nums[start];//只考虑第一栋的情况下,第一栋只有偷了,才是最好的选择
        dp[start+1] = Math.max(nums[start],nums[start+1]);//只考虑前两栋的情况下,可以选择偷第一栋,或者偷第二栋
        //剩下的都需要考虑①:偷还是不偷,②:如果偷=前面不相邻的已经偷了多少+当前这栋有多少。③:如果不偷,那么前面已经偷了多少,就是多少
        for(int i = start+2; i<= end;i++){
            dp[i] = Math.max(dp[i-1],dp[i-2]+nums[i]);
        }
        return dp[end];
    }
}
学有余力的同学可以尝试这个方法,将空间复杂度变为常数级-----------------代码:时间复杂度O(n).空间复杂度O(1)

将dp数组优化掉,换成3个变量,滚动执行。将dp[0]换成first。dp[1]换成second. 也就是first永远指向当前栋的前面不相邻的,second永远指向前面相邻的。
在这里插入图片描述

class Solution {
    public int rob(int[] nums) {
        int length = nums.length;//房子的数量
        if(length == 1) return nums[0];//如果只有一栋,那么肯定偷它,返回即可
        else if (length == 2) return Math.max(nums[0],nums[1]);//如果只有两栋,那么相邻的不能偷,只能选一栋钱多的
        //如果房子很多,那么分为两种情况①:第一栋要偷,最后一栋不能偷。②:第一栋不偷,最后一栋可以偷
        return Math.max(robRange(nums,0,length-2), robRange(nums,1,length-1));
    }
    public int robRange(int[] nums, int start, int end){
        /**进入小偷视角,他第一个偷的房子start,为他眼里的第一栋。 而实际在街区可能是第一栋,也可能是第二栋**/
        int dp[] = new int [nums.length];//dp数组
        int first = nums[start];//只考虑第一栋的情况下,第一栋只有偷了,才是最好的选择
        int second = Math.max(nums[start],nums[start+1]);//只考虑前两栋的情况下,可以选择偷第一栋,或者偷第二栋
        //剩下的都需要考虑①:偷还是不偷,②:如果偷=前面不相邻的已经偷了多少+当前这栋有多少。③:如果不偷,那么前面已经偷了多少,就是多少
        for(int i = start+2; i<= end;i++){
            int temp = second;
            second = Math.max(first+nums[i],second);
            first = temp;
        }
        return second;
    }
}
数控系统(CNC)系列:Fanuc 31i-B_(5).基本操作与编程 Fanuc 31i-B 系统使用 G 代码和 M 代码进行编程。G 代码主要用于控制机床的运动,M 代码用于控制辅助功能,如冷却液开关、主轴启动等。G 代码:用于指定机床的运动方式。例如,G00 用于快速定位,G01 用于直线插补,G02 用于顺时针圆弧插补,G03 用于逆时针圆弧插补。M 代码:用于控制机床的辅助功能。例如,M03 用于启动主轴顺时针旋转,M05 用于停止主轴,M08 用于开启冷却液,M09 用于关闭冷却液。 阅读详情

相关推荐

论文记录:Affine Formation Maneuver Control of Multiagent Systems

多智能体编队控制仿真记录 实现功能:平移/旋转/尺寸缩放/shear,见截图 注意:本仿真图只是起到了演示效果,中间过程速度产生突变,实际中是不允许的。需要进行速度规划,这一点论文中仿真图更为贴合实际。 参考论文:Zhao, S. (2018). Affine Formation Maneuver Control of Multiagent Systems. IEEE Transactions on Automatic Control, 63(12), 4140–4155. 突然发现有个博主写得很好,参考:

W1H1J1的博客 2108

LeetCode213打家劫舍2

对每条链跑一遍打家劫舍 I 的线性 DP,取最大值即可。,相邻房屋不能同时偷,求最大金额。

2401_89012560的博客 752

【学习记录】IIC驱动ICM42670+卡尔曼滤波+四元数姿态角解算

ICM42670陀螺仪可以使用iic驱动,单片机平台使用GD32f305VE。

liarsup的博客 8270

Java | Leetcode Java题解之第213题打家劫舍II

Java | Leetcode Java题解之第213题打家劫舍II

m0_57195758的博客 387

无人机中继传输数据链技术,(无人机+自组网)远距离传输技术实现详解

无人机中继传输数据链技术是指利用无人机作为空中移动中继节点,在需要通信的区域上空悬停或移动,以建立和维护通信链路,从而扩展通信范围、提高通信质量和灵活性。1. 通信链路:是无人机中继通信的重要组成部分,包括源节点到中继节点的链路和中继节点到目标节点的链路。同时,它还支持空中到地面的通信,距离大于100km。总的来说,无人机中继传输数据链技术和(无人机+自组网)远距离传输技术都是现代无人机通信领域的重要技术,它们的应用极大地扩展了无人机的通信范围和灵活性,为各种应用场景提供了强有力的支持。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 2079

MaaS 商业模式全面分析报告:从技术赋能到商业变现的全链条探索

MaaS(模型即服务)商业模式正成为AI产业主流,2024年上半年中国市场规模达2.5亿元,预计2027年占比将提升至47%。该模式通过云服务提供预训练AI模型,大幅降低企业应用AI的技术门槛和成本。核心盈利方式包括按使用量计费、订阅制、定制化服务等,其中混合模式因灵活性成为趋势。MaaS产业链包含模型提供商、云平台、应用开发商和最终用户,重塑了AI产业格局。随着《数据法案》等监管加强,数据增值服务面临更严格合规要求。未来五年,中国MaaS市场增速预计超50%,用户规模将从2025年2.1亿增至2030年5

芯片行业20年 · 参与定义实现千万级量产出货 · AI芯片PM 2893

力扣213 打家劫舍II java实现

题目描述了一个环形房屋的打家劫舍问题,要求在不触发警报(不能同时偷相邻房屋)的情况下获得最大金额。关键解法是将环形问题拆解为两个线性问题:分别计算去掉首尾房屋后的最大金额,然后取两者较大值。具体实现使用动态规划,通过两个数组分别记录从第一间到倒数第二间,以及从第二间到最后一间的最大金额。时间复杂度为O(n),空间复杂度为O(n)。示例验证了算法的正确性,如输入[2,3,2]输出3,[1,2,3,1]输出4。该解法有效避免了首尾房屋同时被选的问题。

m0_58648798的博客 135

WinForm轻松打造AntDesign现代化工具栏

摘要: 本文介绍如何在WinForm中利用AntdUI库实现AntDesign风格工具栏,包括安装配置、动态生成按钮/下拉菜单、布局优化及主题美化。通过AntButton、AntDropdown等控件结合事件绑定,可快速构建支持图标、工具提示、权限控制的现代化工具栏,并解决常见图标加载、布局错乱问题。最后提供代码示例与响应式设计技巧,助你打造高效美观的WinForm界面。 (字数:150)

java专栏 1595

LeetCode213—打家劫舍Ⅱ(java版)

题目描述: 标签:动态规划 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。 给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。 代码: 思路分析:动态规划五部曲 具体思路和 198打家劫舍 一样。不同的是因为成环了,所以只能在1~n-1...

qq_40840749的博客 328

C#上位机性能优化全攻略:彻底解决界面卡顿+多线程死锁+PLC数据延迟,产线实测稳定运行2年

一开始我们用的是网上找的零散优化代码,根本满足不了要求,后来花了2个月的时间,把之前27条产线的代码整理、重构、优化,做了一套这套方案上线后,连续稳定运行2年零3个月:界面响应时间稳定在50ms以内,多线程死锁率持续为0,PLC数据延迟稳定在150ms以内,系统可用率≥99.99%,帮客户一年省下了超过480万的停线损失、罚款损失和人工成本,客户第二年就把剩下的22条产线也全部交给我们做了,还介绍了3家同行。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 294

基于 Verilog 的经典数字电路设计(10)三态门

三态门(Triple-State Gate)亦称 “三态输出门”、“三态门输出电路”,是一种重要的总线接口电路,具有高电平、低电平和高阻抗三种输出状态的门电路,不过我们通常在设计中比较少见。   三态指其输出既可以是一般二值逻辑电路,即正常的高电平(逻辑 1)或低电平(逻辑 0),又可以保持特有的高阻抗状态,高阻态相当于隔断状态(电阻很大,相当于开路)。

新芯设计的博客 1万+

leetcode213打家劫舍 IIjava题解(动态规划)

1.题目 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。 示例 1: 输入: [2,3,2]输出: 3 解释:...

老简单题 316

Allegro如何使用Cross Copy命令快速复制器件的位号和丝印外形其他层

在Allegro做PCB设计的时候,如果需要复制器件的位号到其它层是无法直接实现的,如果直接拷贝器件的位号的话,效果如下。但是Allegro的Cross Copy命令是支持复制任何属性的图形到其它层的,下面以复制器件位号和丝印外框为例说明。同样如果使用Z-copy命令,也是无法Z-copy text的,Finds下方texts是灰色的。如何使用Cross Copy命令快速复制器件的位号和丝印外形其他层。另外cap处可以选择线段的端点是圆形,八角形,或者方形的铜皮。拷贝C1013,出现的是C*

weixin_54787054的博客 2672

[C++]Leetcode超高效刷题顺序及题目详解笔记(持续更新中)

一.引言 博主最近在LeetCode上用C++练习。一路走来踩过一些坑,做了一些总结和笔记,分享给需要的人。 LeetCode网址:https://leetcode.com/ LeetCode中文版:https://leetcode-cn.com/ 二.刷题指南 LeetCode 是一个非常棒的平台,收集了许多公司的面试题目。相对其他平台而言,有着下面的几个优点: 题目全部来自业内大公司的真实面试不用处理输入输出 精力全放在解决具体问题上题目有丰富的讨论 可以参考别人的思路精确了解自己代码在所有提交代码中

cpb____的博客 2万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【中等】力扣算法题解析LeetCode213:打家劫舍 II

房屋围成一圈的小偷问题,要求在不触发警报的情况下获取最大金额。核心思路是将环形问题拆分为两个单排问题:忽略首或尾房屋,分别计算最大金额后取较大值。使用动态规划优化空间复杂度至O(1),通过滚动变量prev和curr实现。代码处理了边界情况(如数组长度为1或2时),主函数调用辅助函数计算两个子区间的最大值。

ylumwd的博客 824

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

代码随想录算法训练营Day44 | 198.打家劫舍、213.打家劫舍II、337.打家劫舍 III

训练营第44天:198.打家劫舍、213.打家劫舍II、337.打家劫舍 III

jiabao0520的博客 966

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

day39 | 198.打家劫舍 213.打家劫舍II 337.打家劫舍III

一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,小偷又发现了一个新的可行窃的地区。给定一个代表每个房屋存放金额的非负整数数组,计算你。给定一个代表每个房屋存放金额的非负整数数组,计算你。

m0_65709641的博客 895

【刷题目录1】按标签刷LeetCode热题HOT100 java题解分类汇总

1.栈 2.堆 3.贪心算法 4.排序 5.位运算 6.树 7.深度优先搜索 8.广度优先搜索 9.并查集 10.图 11.设计

乾坤未定,你我皆是黑马 3466

打家劫舍系列 | Leetcode 198 | 213 | 337 | 动态规划 | 滚动数组

毛毛张今天分享的是动态规划中打家劫舍系列的题目!

神马都会亿点点的毛毛张 1254

leetcode刷题记录

刷题过程记录

洪肥肥的博客 2063

(算法)打家劫舍II————<动态规划>

【代码】(算法)打家劫舍II————<动态规划>

2301_79580018的博客 1100

LeetCode-337题:打家劫舍III(原创)

递归函数存在大量重复调用的情况,可以考虑设计一个缓存来存储已经计算好的节点,这样能大大提高算法性能

it_fly的专栏 1198

代码随想录Day39 | 198.打家劫舍,213.打家劫舍II,337.打家劫舍III

在dfs的后序遍历位置进行判断,每个节点根据子节点能够盗取的最高金额进行判断。打家劫舍2,房屋成环,求两次打家劫舍1即可。一次不包括最后一个房屋,一次不包括第一个房屋。

weixin_43992121的博客 749

leetcode213---打家劫舍2

leetcode213—打家劫舍2原题链接 题意简述 输入: nums []int,非负整数数组 操作: 取nums数组中不相邻的数,且第一个与最后一个不能同时取,使和最大 输出: max int 解法分析 动态规划 1.先考虑一个问题,就是原条件中第一个与最后一个可以同时取.这个问题就是leetcode---打家劫舍1 记解决这个问题函数为 solve(int[] nums) 状态转移方程:...

Again的博客 373

Leetcode面试经典150题-213.打家劫舍II

Leetcode面试经典150题-213.打家劫舍II,字节跳动高频面试题啊,抖音和头条都考过,务必掌握

个人专长:数据结构和算法、大数据、数据库、主流框架 383

[leetcode]198. 打家劫舍

个人博客:https://javaniuniu.com/ 难度:简单 本题涉及算法: 动态规划 思路:动态规划 类似题型: 题目 198. 打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。 示例 1: 输入: [1,2,3,1] 输出: 4 解释: 偷窃 1 .

java牛牛的博客 230
上一篇: java数据结构与算法刷题-----LeetCode198. 打家劫舍
下一篇: java数据结构与算法刷题-----LeetCode62. 不同路径
ydenergy_殷志鹏
博客等级 码龄7年 5887粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值