Leetcode Top 100 Liked Questions(序号198~234)

news2025/1/17 23:16:27

​198. House Robber ​

题意:你是一个强盗,你要去抢劫,每个房子都有特定金额的钱,但是不能拿相邻的房子的钱

我的思路

有点像动态规划,但是首先把每个结点空一格的后缀和得到,2n

之后从(i=n-1;i>=0;i--)dp[i]=(nums[i]-nums[i+2])+max(dp[i+2],dp[i+3]);

代码 Runtime0 ms Beats 100% Memory7.9 MB Beats 19.97%

哈哈哈这都给我做出来了.jpg

class Solution {
public:
    int rob(vector<int>& nums) {
        int n=nums.size();
        if(n==1)return nums[n-1];
        else if(n==2)return max(nums[0],nums[1]);
        vector<int>dp(n,0);
        for(int i=n-3;i>=0;i=i-2) nums[i]=nums[i]+nums[i+2];
        for(int i=n-4;i>=0;i=i-2) nums[i]=nums[i]+nums[i+2];
        dp[n-1]=nums[n-1]; dp[n-2]=nums[n-2]; dp[n-3]=nums[n-3];
        if(n==3)return max(nums[0],nums[1]);
        for(int i=n-4;i>=0;i--)
            dp[i]=(nums[i]-nums[i+2])+max(dp[i+2],dp[i+3]);
        return max(dp[0],dp[1]);
    }
};

标答 更简洁的动态规划

注意dp是从1开始的,因为这样,dp[i-2]就不用特判了;dp[i]表示的是在i结点之前拿到的最大的钱

状态转移方程为dp[i]=max(dp[i-1],dp[i-2]+nums[i-1]);因为当前的结点要么拿要么不拿

如果拿了,dp[i]=dp[i-2]+num[i-1];如果没拿,dp[i]=dp[i-1]

代码 Runtime 0 ms Beats 100% Memory7.9 MB Beats 6.50%

class Solution {
public:
    int rob(vector<int>& nums) {
        if(nums.size()==0)return 0;
        int n=nums.size(); vector<int> dp(n+1,0);
        dp[1]=nums[0];
        for(int i=2;i<=n;i++)
            dp[i]=max(dp[i-1],dp[i-2]+nums[i-1]);
        return dp[n];
    }
};

标答 空间更少的动态规划

不创建dp了,用prev和curr

代码 Runtime0 ms Beats 100% Memory7.7 MB Beats 76.93%

class Solution {
public:
    int rob(vector<int>& nums) {
        if(nums.size()==0)return 0;
        int n=nums.size(); int prev=0,curr=nums[0],tmp;
        for(int i=2;i<=n;i++){
            tmp=max(curr,prev+nums[i-1]);
            prev=curr; curr=tmp;
        }
        return curr;
    }
};

199. Binary Tree Right Side View 

题意:

我的思路

先层序遍历,之后把每一层的最右边加入

看了标答 dfs也可以

代码 Runtime 0 ms Beats 100% Memory 12 MB Beats 61.69%

class Solution {
public:
    vector<int> rightSideView(TreeNode* root) {
        if(root==NULL)return {};
        queue<TreeNode* >q;vector<int> ans;
        ans.push_back(root->val);
        if(root->left!=NULL)q.push(root->left);
        if(root->right!=NULL)q.push(root->right);
        while(!q.empty()){
            int n=q.size();
            for(int i=0;i<n;i++){
                TreeNode* tmp=q.front();
                if(i==n-1)ans.push_back(tmp->val);
                if(tmp->left!=NULL)q.push(tmp->left);
                if(tmp->right!=NULL)q.push(tmp->right);
                q.pop();
            }
        }
        return ans;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/960253.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

详解I2C

I2C&#xff08;也常写作 I I C IIC IIC&#xff0c; I 2 C I^2C I2C&#xff09;&#xff0c;全称为Inter-Integrated Circuit&#xff08;“互连集成电路”&#xff09;&#xff0c;用于在集成电路之间进行短距离数据传输。它由Philips&#xff08;现在的NXP半导体&#xff0…

龙迅LT6911UXE HDMI转2PORT MIPIDSI/CSI,支持单PORT 4K60HZ,内置MCU,加音频

龙迅LT6911UXE 1.描述&#xff1a; LT6911UXE是一款高性能HDMI2.0到MIPI DSI/CSI转换器&#xff0c;可用于VR、智能手机和显示器应用。 HDMI2.0输入支持高达6Gbps的数据速率&#xff0c;这为60Hz的视频提供了足够的带宽。同时&#xff0c;还支持 HDCP2.3进行数据解密。对于M…

centos7.6离线升级gcc

1.下载需要的gcc&#xff0c;我这里下载的8.3.0版本&#xff1a; 各版本gcc下载地址 2.上传服务器后解压&#xff1a; tar -zvxf gcc-8.3.0.tar.gz --directory/usr/local/3.进入目录&#xff1a; cd /usr/local/gcc-8.3.0/contrib4.查看需要的依赖包具体是什么版本&#xf…

Navigation的基本使用

参考&#xff1a; Navigation Navigation的基本使用 目录 一、Navigation是什么&#xff1f;二、Navigation的三大件三、基本使用1. 导入依赖2. 创建三个不同的fragment用于页面的切换3. 创建导航图4. 设置导航menu5. Activity使用 四、Navigation源码原理解析 一、Navigation是…

基础算法-枚举算法

”现象“ 基础算法-枚举方法-学习 方法&#xff1a; 将问题的所有可能的答案一一列举&#xff0c;然后根据条件判断此答案是否合适&#xff0c;保留合适的&#xff0c;舍弃不合适的 优化点&#xff1a; 尽量减少枚举的可能&#xff0c;减少枚举的范围与条件尽量对问题简单化…

操作系统备考学习 day1 (1.1.1-1.3.1)

操作系统备考学习 day1 计算机系统概述操作系统的基本概念操作系统的概念、功能和目标操作系统的四个特征并发共享虚拟异步 操作系统的发展和分类操作系统的运行环境操作系统的运行机制 年初做了一个c的webserver 的项目&#xff0c;在学习过程中已经解除部分操作系统的知识&am…

想要创建一个抖音百科词条怎么做?

抖音作为一个热门的社交媒体平台&#xff0c;用户数量众多&#xff0c;每天产生大量的内容。创建一个抖音百科词条可以帮助你或你所关注的事物增加曝光和知名度。接下来&#xff0c;本文伯乐网络传媒将为你介绍如何创建一个成功的抖音百科词条。 搜集相关信息 搜集与词条相关的…

【STM32教程】第二章 通用输入输出口GPIO

资料下载链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1hsIibEmsB91xFclJd-YTYA?pwdjauj 提取码&#xff1a;jauj 1. GPIO的基本结构 1.1 概述 GPIO&#xff08;General Purpose Input Output&#xff09;意思是通用输入输出口可配置为8种输入输出模式&a…

面试题——网络IO模型

一、socket socket是在应用层和传输层中间的抽象层&#xff0c;它把传输层&#xff08;TCP/UDP&#xff09;的复杂操作抽象成一些简单的接口&#xff0c;供应用层调用实现进程在网络中的通信。Socket起源于UNIX&#xff0c;在Unix一切皆文件的思想下&#xff0c;进程间通信就被…

SAP-QM-质检操作

一、系统自动创建检验批 1、物料主数据设置 MM03-质量管理-检验设置-04来自生产收货的检验 检验类型 过账到检验库存&#xff1a;勾选进入检验库存 控制检验批&#xff1a;控制检验批的产生方式&#xff0c;按订单产生、按行产生、按凭证产生&#xff0c;例每个物料凭证项目…

antd5:form组件底层封装库field-form-1.37.0启动

一开始node版本是18.16.0 npm install发现安装依赖成功 npm start发现启动出错 node:internal/crypto/hash:71this[kHandle] new _Hash(algorithm, xofLen);^Error: error:0308010C:digital envelope routines::unsupportedat new Hash (node:internal/crypto/hash:71:19)…

神经网络NLP基础 循环神经网络 LSTM

用的时候&#xff0c;只关心token的输入&#xff0c;以及hidden state就好了 sequence的length是多少&#xff0c;lstm的cell的数量就是多少 LSTM BI-LSTM stacked lstm GRU 实现

手把手教你劳动仲裁

手把手教你劳动仲裁 前言什么是劳动仲裁劳动仲裁的痛点对公司没有影响&#xff0c;而你只拿到你该拿到的时间 个人劳动仲裁的流程第一步&#xff1a;去当地仲裁委立案窗口&#xff08;你公司所在地区的仲裁委&#xff09;第二步: 填写仲裁申请书个人信息企业信息请求事项事实缘…

【OpenCL基础 · 一】因源

文章目录 前言一、单核标量处理器的瓶颈1.提升时钟频率2.提升指令级并行能力 二、多核和向量化1.多核2.向量化 三、异构并行和OpenCL1.GPGPU2.CUDA和OpenCL 前言 随着人工智能的发展以及大部分场景中实时性的要求&#xff0c;人们对于计算机算力要求逐渐增加。为了提高计算速度…

独家揭秘!短视频商城小程序源码:打造属于你的购物新体验

近年来&#xff0c;随着移动互联网的快速发展&#xff0c;短视频平台逐渐流行起来。借助短视频的视听魅力&#xff0c;人们可以更加轻松地了解产品和服务&#xff0c;这使得短视频平台在商业领域中扮演了重要的角色。而如今&#xff0c;短视频商城小程序源码横空出世&#xff0…

ElasticSearch学习4--复杂查询

1、查询分类 查询所有&#xff1a;查询出所有数据&#xff0c;一般测试用。例如&#xff1a;match_all全文检索&#xff08;full text&#xff09;查询&#xff1a;利用分词器对用户输入内容分词&#xff0c;然后去倒排索引库中匹配。例如&#xff1a; match_query 根据单个字段…

封装动态表单组件

技术栈&#xff1a;vue2 js webpack 需求&#xff1a; 利用数据渲染表单&#xff0c;实现代码的精简化及效率的提升。 效果图&#xff1a; 封装的组件&#xff1a; <div v-if"formConfig"><el-formv-bind"$attrs"ref"formDom":model…

为什么你懂英语但不能说流利 学习

目录 对于提升口语流畅度&#xff1a; 我们应该做到是输入和输出占比为3&#xff1a;7&#xff1b;可实际做到的是7&#xff1a;3 但是这个方法也有一个问题&#xff0c;就是没有错误反馈 最好的就是在一个开始的时候&#xff0c;就学对&#xff0c;第一次的效果很重要 另…

vscode中讨厌的蓝色波浪线的去除小trick和原理

问题描述 不小心“设置同步”时和远程电脑的合并&#xff08;merge&#xff09;了&#xff0c;然后就出现了这个问题&#xff01;烦死了&#xff01;&#xff01;&#xff01; 大概是这个样子&#xff1a; 解决办法 站在了巨人的肩膀上&#xff0c;在下图位置输入这样一行参数&…

【TCP】四次挥手(最强详解!!通俗易懂!!)

目录 想要了解三次握手的话可以参考我的另外一篇博客 首先来了解一下FIN和ACK FIN ACK 接着我们再来具体的了解TCP四次挥手过程 转换为最最通俗理解方法: 想要了解三次握手的话可以参考我的另外一篇博客 【TCP】三次握手&#xff08;最强详解&#xff01;&#xff01;通俗…