ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

--day5

2021-10-27 23:03:16  阅读:166  来源: 互联网

标签:right sta re -- day5 height int left


计算机组成原理:

控制器的基本结构

控制器的功能是解释指令(完成指令)、保证指令的按序执行

  • PC(程序计数器)寄存器保存了当前指令的地址,进行取指令,PC有计数功能。
  • IR(指令寄存器)存放当前要执行的指令,将操作码送入CU进行分析。
  • CU(控制单元)发出控制信号,控制相对应的部件来执行指令。

leetcode每日一题:

次元门(\\v\\):

接雨水问题 , 三种解法.

NO 1: 单调栈.

        对单调栈的回退(出栈)过程进行模拟 , 就可很明确的得到计算过程. 

class Solution {
public:
    int trap(vector<int>& height) {
        int n = height.size() , re = 0 , left = 0;
        stack<int>sta;

        for(int i = 0;i < n;i ++){
            while(!sta.empty() && height[i] > height[sta.top()]){
                int cnt = sta.top();
                sta.pop();

                if(sta.empty()) break;

                int left = sta.top();
                int col = i - left - 1;
                int row = min(height[left] , height[i]) - height[cnt];
                re += col * row;

            }
            sta.push(i);
        }

        return re;
    }
};

NO 2: dp 动态规划

        从左往右遍历: 假设最右端存在一个 无限高 的柱子 , 计算每个柱子最多可以积累的水;

        从右往左遍历: 假设最左端存在一个 无限高 的柱子 , 计算每个柱子最多可以积累的水;

        取 min - height 就是该单元格能接的水.

class Solution {
public:
    int trap(vector<int>& height) {
        int n = height.size() , re = 0;
        
        vector<int>dp_left(n , 0);
        int left = height[0];
        vector<int>dp_right(n , 0);
        int right = height[n - 1];

        for(int i = 0;i < n;i ++){
            left = max(left , height[i]);
            dp_left[i] = left;
        }

        for(int i = n - 1;i >= 0;i --){
            right = max(right , height[i]);
            dp_right[i] = right;
        }

        for(int i = 0;i < n;i ++){
            re += min(dp_right[i] , dp_left[i]) - height[i];
        }

        return re;
    }
};

NO 3: 双指针

        

标签:right,sta,re,--,day5,height,int,left
来源: https://blog.csdn.net/EX_fish/article/details/121000906

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有