Day Nine

算法题

算法题:最小栈
来源:力扣 155
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。
push(x) —— 将元素 x 推入栈中。
pop() —— 删除栈顶的元素。
top() —— 获取栈顶元素。
getMin() —— 检索栈中的最小元素。

示例:
输入:
[“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“getMin”]
[[],[-2],[0],[-3],[],[],[],[]]
输出:
[null,null,null,null,-3,null,0,-2]
解释:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.getMin(); --> 返回 -2.
提示:
pop、top 和 getMin 操作总是在 非空栈 上调用。
解题思路
通过昨天的对栈的理解,这道题唯一的难点就在于如何返回堆栈中最小值,我们需要记录堆栈每个时刻的最小值,当进栈出栈时,最小值都有可能变化,所以我们拿一个另一个栈来存储每个时刻的栈中最小值即可。

class MinStack {
public:
    /** initialize your data structure here. */
    MinStack() {

    }
    
    void push(int x) {
        mydata.push(x);
        if(mins.empty()){
            mins.push(x);
        }else{
            if(x>mins.top()){
                mins.push(mins.top());
            }else{
                mins.push(x);
            }
        }
    }
    
    void pop() {
        mydata.pop();
        mins.pop();
    }
    
    int top() {
        return mydata.top();
    }
    
    int getMin() {
        return mins.top();
    }
private:
    std::stack<int> mydata;
    std::stack<int> mins;
};

算法题:验证栈序列
来源:力扣 946
给定 pushed 和 popped 两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false 。

示例 1:
输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]
输出:true
解释:我们可以按以下顺序执行:
push(1), push(2), push(3), push(4), pop() -> 4,
push(5), pop() -> 5, pop() -> 3, pop() -> 2, pop() -> 1

示例 2:
输入:pushed = [1,2,3,4,5], popped = [4,3,5,1,2]
输出:false
解释:1 不能在 2 之前弹出。

提示:
0 <= pushed.length == popped.length <= 1000
0 <= pushed[i], popped[i] < 1000
pushed 是 popped 的排列。

解题思路
验证一个出栈序列是否合法,我们先模拟入栈,依次入栈,每次入栈判断,栈的头部元素是否等于出栈序列的第一位,如果是就将其出栈,出栈序列第一位也出栈。当模拟完之后,最后栈中若存有元素,证明序列不合法。

图解
在这里插入图片描述
代码:

class Solution {
public:
    bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
        std::stack<int> test;
        vector<int>::iterator k = popped.begin();
        for(int i=0;i<pushed.size();i++){
            test.push(pushed[i]);
            while(!test.empty()&&test.top()==popped.front()){
                test.pop();
                popped.erase(k);
            }
        }
        if(test.empty()){
            return true;
        }
        return false;
    }
};

数据结构及算法书读后感

今天看了《大话数据结构》前两章,基本都是概念,我不太喜欢记这些。第一张主要内容我觉得就是逻辑结构和物理结构,逻辑结构有集合,线性,树形,和图形结构,物理结构有顺序和链式存储结构。第二章讲了算法的各种定义,嘿嘿我都没记,只知道高效率低存储,利用时间复杂度去推算自己算法花费的时间,想一下是否有办法改进。而《算法图解》看了第一章,学会了二分查找法,理解算法的作用。

前端

RGB

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>RGB</title>
    <style>
        /* 
        RGB:red green blue
        美术老师说过这三个颜色能调一切颜色
        每个颜色浓度为0-255
        十六进制00-ff
        三个颜色浓度不同就会混成不同颜色
        rgba: a为透明度 0-1 
         */
        .box1{
            width: 300px;
            height: 300px;
            background-color: rgb(255,255,255);
            background-color: #ffffff;
            background-color: rgb(0,0,0);
            background-color: #000000;
            background-color: rgb(0,0,255);
            background-color: rgb(255,0,0);
            background-color: rgb(0,255,0);
        }
        .box2{
            width: 300px;
            height: 300px;
            background-color:  rgba(0, 0, 0, 0.8);
        }
    </style>
</head>
<body>
    <div class="box1"><div class="box2"></div></div>
</body>
</html>

演示效果
在这里插入图片描述
在这里插入图片描述
HSL

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HSL</title>
    <style>
        /* 
        HSL hue, saturation, lightness 
        (色相(0-360),饱和度(0%-100%),亮度(0%-100%))

         */
        .box1{
            width: 300px;
            height: 300px;
            background-color: hsl(180, 50%, 50%);
        }
    </style>
</head>
<body>
    <div class="box1"></div>
</body>
</html>

演示效果
在这里插入图片描述
文档流

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>normalFlow</title>
    <style>
        .box1{
            background-color: indigo;
        }
        .box2{
            background-color: red;
        }
    </style>
</head>
<body>
    <!-- 
        文档流
            -用户看到最顶层
            -最底层为文档流,网页基础,所创元素默认在文档流中
            -特点:
                1.块元素
                    -块元素会在页面独占一行
                    -默认父元素宽度
                    -默认高度看内容的多少,撑大
                2.行内元素
                    -不会占一行,只占自身大小
                    -自左向右排列
                    -默认高度和宽度与内容有关

     -->
     <div class="box1">a</div>
     <div class="box2">b</div>
    </body>
</html>

演示效果
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Android是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的移动操作系统,主要应用于移动设备,如智能手机和平板电脑。该系统最初由安迪·鲁宾开发,后被Google公司收购并注资,随后与多家硬件制造商、软件开发商及电信营运商共同研发改良。 Android操作系统的特点包括: 开放源代码:Android系统采用开放源代码模式,允许开发者自由访问、修改和定制操作系统,这促进了技术的创新和发展,使得Android系统具有高度的灵活性和可定制性。 多任务处理:Android允许用户同时运行多个应用程序,并且可以轻松地在不同应用程序之间切换,提高了效率和便利性。 丰富的应用生态系统:Android系统拥有庞大的应用程序生态系统,用户可以从Google Play商店或其他第三方应用市场下载和安装各种各样的应用程序,满足各种需求。 可定制性:Android操作系统可以根据用户的个人喜好进行定制,用户可以更改主题、小部件和图标等,以使其界面更符合个人风格和偏好。 多种设备支持:Android操作系统可以运行在多种不同类型的设备上,包括手机、平板电脑、智能电视、汽车导航系统等。 此外,Android系统还有一些常见的问题,如应用崩溃、电池耗电过快、Wi-Fi连接问题、存储空间不足、更新问题等。针对这些问题,用户可以尝试一些基本的解决方法,如清除应用缓存和数据、降低屏幕亮度、关闭没有使用的连接和传感器、限制后台运行的应用、删除不需要的文件和应用等。 随着Android系统的不断发展,其功能和性能也在不断提升。例如,最新的Android版本引入了更多的安全性和隐私保护功能,以及更流畅的用户界面和更强大的性能。此外,Android系统也在不断探索新的应用场景,如智能家居、虚拟现实、人工智能等领域。 总之,Android系统是一种功能强大、灵活可定制、拥有丰富应用生态系统的移动操作系统,在全球范围内拥有广泛的用户基础。
Android是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的移动操作系统,主要应用于移动设备,如智能手机和平板电脑。该系统最初由安迪·鲁宾开发,后被Google公司收购并注资,随后与多家硬件制造商、软件开发商及电信营运商共同研发改良。 Android操作系统的特点包括: 开放源代码:Android系统采用开放源代码模式,允许开发者自由访问、修改和定制操作系统,这促进了技术的创新和发展,使得Android系统具有高度的灵活性和可定制性。 多任务处理:Android允许用户同时运行多个应用程序,并且可以轻松地在不同应用程序之间切换,提高了效率和便利性。 丰富的应用生态系统:Android系统拥有庞大的应用程序生态系统,用户可以从Google Play商店或其他第三方应用市场下载和安装各种各样的应用程序,满足各种需求。 可定制性:Android操作系统可以根据用户的个人喜好进行定制,用户可以更改主题、小部件和图标等,以使其界面更符合个人风格和偏好。 多种设备支持:Android操作系统可以运行在多种不同类型的设备上,包括手机、平板电脑、智能电视、汽车导航系统等。 此外,Android系统还有一些常见的问题,如应用崩溃、电池耗电过快、Wi-Fi连接问题、存储空间不足、更新问题等。针对这些问题,用户可以尝试一些基本的解决方法,如清除应用缓存和数据、降低屏幕亮度、关闭没有使用的连接和传感器、限制后台运行的应用、删除不需要的文件和应用等。 随着Android系统的不断发展,其功能和性能也在不断提升。例如,最新的Android版本引入了更多的安全性和隐私保护功能,以及更流畅的用户界面和更强大的性能。此外,Android系统也在不断探索新的应用场景,如智能家居、虚拟现实、人工智能等领域。 总之,Android系统是一种功能强大、灵活可定制、拥有丰富应用生态系统的移动操作系统,在全球范围内拥有广泛的用户基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Monster_White

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

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

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

打赏作者

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

抵扣说明:

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

余额充值