首页 > 其他分享 >[代码随想录]Day09-栈与队列part01

[代码随想录]Day09-栈与队列part01

时间:2023-08-04 21:23:14浏览次数:45  
标签:Day09 return part01 随想录 lens int numbers func obj

题目:232. 用栈实现队列

思路:

因为go没有栈和队列的类型,直接自己写就行了。

比较简单的实现,具体看代码中的注释。

代码:

type MyQueue struct {
    numbers []int
}


func Constructor() MyQueue {
    return MyQueue{numbers:[]int{}}
}


func (this *MyQueue) Push(x int)  {
    this.numbers = append(this.numbers, x) // 添加进去
}


func (this *MyQueue) Pop() int {
    recall := this.numbers[0] // 记录第一个元素
    this.numbers = this.numbers[1:] // 删除第一个元素
    return recall // 返回第一个元素
}


func (this *MyQueue) Peek() int {
    return this.numbers[0] // 返回第一个元素
}


func (this *MyQueue) Empty() bool {
    if len(this.numbers) == 0 { // 如果内部的数组长度为0返回true
        return true
    }
    return false
}


/**
 * Your MyQueue object will be instantiated and called as such:
 * obj := Constructor();
 * obj.Push(x);
 * param_2 := obj.Pop();
 * param_3 := obj.Peek();
 * param_4 := obj.Empty();
 */

参考:

代码随想录

题目:225. 用队列实现栈

思路:

比较简单的实现,具体看代码中的注释。

直接记录了lens能省一点时间,值得注意的是结构体初始化的时候多个成员的话要在每一个的后面都要加上逗号","包括最后一个。

代码:

type MyStack struct {
    numbers []int
    lens int
}


func Constructor() MyStack {
    return MyStack{
        numbers : []int{},
        lens:0,
    }
}


func (this *MyStack) Push(x int)  {
    this.numbers = append(this.numbers, x) // 压入栈顶
    this.lens++
}


func (this *MyStack) Pop() int {
    recall := this.numbers[this.lens-1]
    this.numbers = this.numbers[:this.lens-1]
    this.lens--
    return recall
}


func (this *MyStack) Top() int {
    return this.numbers[this.lens-1]
}


func (this *MyStack) Empty() bool {
    if this.lens == 0 {
        return true
    }
    return false
}


/**
 * Your MyStack object will be instantiated and called as such:
 * obj := Constructor();
 * obj.Push(x);
 * param_2 := obj.Pop();
 * param_3 := obj.Top();
 * param_4 := obj.Empty();
 */

参考:

代码随想录

标签:Day09,return,part01,随想录,lens,int,numbers,func,obj
From: https://www.cnblogs.com/wtcsky/p/17607053.html

相关文章

  • 代码随想录算法训练营第六天|力扣454.四数相加II、力扣383.赎金信、力扣15.三数之和、
    四数相加II(力扣454.)前两个数组的值直接遍历,并将和存入map中,key为和,value为出现次数后两个数组再次遍历,在map中寻找是否存在0-(c+d),若存在,count+=valuefor(a:A){//遍历ABfor(b:B){map[a+b]++;}}//insert操作for(c:C){for(d:D){target=0-(c+d);if(map.containsKey(t......
  • 代码随想录算法训练营第四十五天| 503.下一个更大元素II 42. 接雨水
    503.下一个更大元素II 要求:数组是环,需要找到下一个最大的元素思路1:先作为直线遍历,然后没有的节点,放到首部,再找比他大的节点注意:头节点代码:1//要求:返回循环数组中下一个更大的数字步数2//思路:先不循环遍历,3//然后对每个-1节点,以他为起始,放到数组的开头,计算有几......
  • 代码随想录算法训练营第九天| 复习字符串和双指针法(看卡哥文章复习)
     KMP算法就是在一个字符串中寻找另一个子串,避免了“跳回下一个字符再重新匹配”,实现了在一次字符串的遍历过程中就可以匹配出子串。28. 实现 strStr()  (本题可以跳过)     卡哥建议:因为KMP算法很难,大家别奢求 一次就把kmp全理解了,大家刚学KMP一定会有各种各样的......
  • 初学C语言day09--宏定义
    预处理指令程序员所编写的代码并不是能被编译器直接编译的标准C代码,需要一段程序翻译一下翻译的程序称为预处理器,翻译的过程叫做预处理,需要被翻译的代码叫做预处理指令,以#开头的都是预处理指令查看预处理结果:gcc-Ecode.c把预处理的结果显示到终端gcc-Ecode.c-ocode......
  • [代码随想录]Day07-字符串 part01
    题目:344.反转字符串思路:每次把最前面和最后面的交换位置即可strings库里没有反转的方法——这个反转是之后几个题的一个基础代码:双指针调换位置funcreverseString(s[]byte){l,r:=0,len(s)-1//最前面的元素,最后面的元素forl<r{s[l],s[......
  • 代码随想录算法训练营第四十三天| 583. 两个字符串的删除操作 72. 编辑距离
    583.两个字符串的删除操作要求:删除最少的步数,来让这两个字符串相等思路:求末尾的最长公共子序列的长度,然后减去他们的长度代码:1//要求:两个字符串,删除任意一个字符后,让这两个字符相等2//dp[n][m]以n-1结尾的字符串变成节点为m-1为子序列的最大个数3//4//求......
  • 代码随想录算法训练营第四十一天| 1143.最长公共子序列 1035.不相交的线 53. 最大
    1143.最长公共子序列  要求:可以跳过,找出来最长符合的节点难点:如何跳过了之后仍然保留之前的值思路:如果不符,并不是dp[i-1][j-2]等于之前的值,而是dp[i][j]等于它的相关节点以上很重要代码:1//要求:两个子数组,可以删减跳过,找出最长的长度2//思路:dp[n][m]代表第......
  • 代码随想录算法训练营第五天|力扣242.有效的字母异位词、力扣242.两个数组的交集、力
    哈希表哈希表理论基础哈希表,又称为散列表(HashTable),是根据关键码的值而直接进行访问的数据结构其中,数组就是一张哈希表;表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素哈希表解决的问题:一般哈希表都是用来快速判断一个元素是否出现在集合中哈希函数:把学生的......
  • 代码随想录算法训练营第三天| LeetCode 242.有效的字母异位词 349. 两个数组的交集
    242.有效的字母异位词    卡哥建议: 这道题目,大家可以感受到数组用来做哈希表给我们带来的遍历之处。    题目链接/文章讲解/视频讲解: https://programmercarl.com/%E5%93%88%E5%B8%8C%E8%A1%A8%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html   做题思路:......
  • day09
    Python常用模块time模块(时间)importtime时间戳时间戳(timestamp):时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。importtimetime_stamp=time.time()print(time_stamp,type(time_stamp))1690376372.7548702<class'float'>格式化时间格式化的时间字......