栈刷题记(二-用栈操作构建数组)

简介: 栈刷题记(二-用栈操作构建数组)

前言

  • 各位读者,晚上好呀!,小嘟我已经更了15篇题目啦,感觉算法其实也就是那么回事,不是很恐惧了。

正文

题目

题目约束条件

示例

题目分析

小嘟在这里大胆猜测一下:肯定有读者看到这个题目的文字好多,然后就已经做好了放弃的准备😂😂😂 ,最后也就确实放弃了。


有位伟人曾经说过:文字越长题越简单,越长意味着给的信息点也就越多。(小嘟我明人不说暗话,其实小嘟就是那个伟人😆😆😆)


首先,我们要明白题目想要表达的意思是什么?它让我们干什么事情呢?


小嘟在这里举一个例子:比方说n=5,也就意味list=[1,2,3,4,5],我们要做的是从左到右依次拿出一个数(依次就是一个数的前边没数字了才能取这个数),然后把它放到target数组中,我们将放进去的操作称为“Push”,拿出来的操作称为“Pop”,最终得到target数组,本题的结果就是要我们求出操作的集合。


那么我们该怎么做呢?


第一件事,想都不用想,首先肯定要遍历;


第二件事,我们怎样遍历?(重点)


首先,我们知道,操作无非就是Push,或者是Pop这两种操作,然后我们在遍历的过程中肯定会比较的,然后再想如果比较为相等,该怎么办呢?答:相等那就是只进行了Push操作,没有Pop操作。那如果不相等呢?答:不相等那就是先进行“Push”操作,再接着进行“Pop操作”。

读者:小嘟你不能一直遍历,你还要退出循环呢?

小嘟:对的,我还要退出呢,那么我什么时候退出呢?

读者:是不是target数组遍历完了呢?

小嘟:读者真厉害!我们要在比较完之后退出,小嘟已经说到了这个地方了,那就直接看代码吧!

代码及其结果展示
var buildArray = function(target, n) {
    let j = 0,i=0;
    let res = [];
    while(j<target.length){
        i++;
        res.push('Push');
        if(i == target[j]){
           j++;
           continue;
        }
        else  res.push('Pop');
  }
  return res;
}


本题回顾
  • 小嘟把Push操作放在了比较的前边,这个位置小嘟也不是一次就想到的,所以,当读者看一些很难懂的代码的时候,不要觉得自己不行,在小嘟看来,这些时间复杂度和空间复杂度都很好的代码,肯定是经过很多次打磨了。
  • 代码比较简单,读者加油!



结尾


学习算法,我们要学的是算法的思想,而不是每道题的代码应该怎样写。

学习思路框架,可以让我们能更轻松的处理问题。

最后的最后,小嘟想说一句话与读者共勉:成功不是一蹴而就的,而是一步一步熬出来的。成功的人懂得熬,所以成功;失败的人只会逃避困难,必然失败。

愿读者能够坚持下去!

明天是工作日,大家晚安啦!

相关文章
|
7天前
|
存储
【数据结构OJ题】轮转数组
力扣题目——轮转数组
15 2
【数据结构OJ题】轮转数组
|
10天前
|
SQL 自然语言处理 网络协议
【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
TCP(Transmission Control Protocol)连接是互联网上最常用的一种面向连接、可靠的、基于字节流的传输层通信协议。建立TCP连接需要经过著名的“三次握手”过程: 1. SYN(同步序列编号):客户端发送一个SYN包给服务器,并进入SYN_SEND状态,等待服务器确认。 2. SYN-ACK:服务器收到SYN包后,回应一个SYN-ACK(SYN+ACKnowledgment)包,告诉客户端其接收到了请求,并同意建立连接,此时服务器进入SYN_RECV状态。 3. ACK(确认字符):客户端收到服务器的SYN-ACK包后,发送一个ACK包给服务器,确认收到了服务器的确
|
9天前
|
API
用栈翻转字符串
用栈翻转字符串
14 0
|
9天前
|
JavaScript
数据结构(用 JS 实现栈和队列【三种方式】)
数据结构(用 JS 实现栈和队列【三种方式】)
16 0
|
13天前
|
存储 缓存 算法
堆和栈的区别及应用场景
堆和栈的区别及应用场景
|
14天前
|
算法
数据结构与算法:栈与队列
数据结构与算法:栈与队列
|
14天前
|
机器学习/深度学习 存储 算法
数据结构与算法:数组的操作
数据结构与算法:数组的操作
|
19天前
|
算法 C语言
【数据结构与算法 经典例题】使用栈实现队列(图文详解)
【数据结构与算法 经典例题】使用栈实现队列(图文详解)
|
14天前
|
存储 缓存 算法
堆和栈的区别及应用场景
堆和栈的区别及应用场景