From a243718760698e7b6f39a34fbefff762970decb4 Mon Sep 17 00:00:00 2001 From: Obsession-kai <237434765@qq.com> Date: Tue, 30 Aug 2022 16:09:19 +0800 Subject: [PATCH] day1/31 --- ...75\346\225\260\347\232\204\346\240\210.go" | 60 ++++++++++++++++++ ...36\347\216\260\351\230\237\345\210\227.go" | 63 +++++++++++++++++++ ...76\350\241\250\345\256\236\347\216\260.go" | 35 +++++++++++ 3 files changed, 158 insertions(+) create mode 100644 "LeetCode/\345\211\221\346\214\207offer/day1_\346\240\210\344\270\216\351\230\237\345\210\227\357\274\210\347\256\200\345\215\225\357\274\211/\345\214\205\345\220\253min\345\207\275\346\225\260\347\232\204\346\240\210.go" create mode 100644 "LeetCode/\345\211\221\346\214\207offer/day1_\346\240\210\344\270\216\351\230\237\345\210\227\357\274\210\347\256\200\345\215\225\357\274\211/\347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.go" create mode 100644 "LeetCode/\345\211\221\346\214\207offer/day1_\346\240\210\344\270\216\351\230\237\345\210\227\357\274\210\347\256\200\345\215\225\357\274\211/\347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227_\351\223\276\350\241\250\345\256\236\347\216\260.go" diff --git "a/LeetCode/\345\211\221\346\214\207offer/day1_\346\240\210\344\270\216\351\230\237\345\210\227\357\274\210\347\256\200\345\215\225\357\274\211/\345\214\205\345\220\253min\345\207\275\346\225\260\347\232\204\346\240\210.go" "b/LeetCode/\345\211\221\346\214\207offer/day1_\346\240\210\344\270\216\351\230\237\345\210\227\357\274\210\347\256\200\345\215\225\357\274\211/\345\214\205\345\220\253min\345\207\275\346\225\260\347\232\204\346\240\210.go" new file mode 100644 index 0000000..fb7dd34 --- /dev/null +++ "b/LeetCode/\345\211\221\346\214\207offer/day1_\346\240\210\344\270\216\351\230\237\345\210\227\357\274\210\347\256\200\345\215\225\357\274\211/\345\214\205\345\220\253min\345\207\275\346\225\260\347\232\204\346\240\210.go" @@ -0,0 +1,60 @@ +// 题目链接:https://leetcode.cn/problems/bao-han-minhan-shu-de-zhan-lcof/ +// 思路:建立辅助栈,与存储数据的栈大小相同,在向栈中存数据时,辅助栈同时存入一个数字 +// 该辅助栈入栈元素的序列是一个非严格递增序列 +// 如果该数据小于辅助栈栈顶元素,则辅助栈存入该数据,否则辅助栈还存入一个辅助栈的栈顶元素。 +//(如果是存入第一个元素,辅助栈直接入栈即可,无比较操作) + +package main + +type MinStack struct { + nums []int //储存栈 + min []int //辅助储存栈,存储最小值 +} + +/** initialize your data structure here. */ +// 为解决命名冲突,这里函数名后+“2”,在LeetCode需删除 +func Constructor2() MinStack { + return MinStack{ + []int{}, + []int{}, + } +} + +// 入栈时,存储栈直接入栈 +// 对辅助栈,若栈长度为0,直接入栈 +// 否则,与栈顶元素进行比较,若大于栈顶元素,入栈,否则,辅助栈再次存入栈顶元素 +func (this *MinStack) Push(x int) { + this.nums=append(this.nums,x) + if len(this.min)==0{ + this.min=append(this.min,x) + }else if this.min[len(this.min)-1] 0{ + x := this.stack1[len(this.stack1)-1] + this.stack2 = append(this.stack2,x) + this.stack1 = this.stack1[:len(this.stack1)-1] + } + } + // stack2出栈的元素即为队首元素 + if len(this.stack2) > 0{ + res := this.stack2[len(this.stack2)-1] + this.stack2 = this.stack2[:len(this.stack2)-1] + return res + } + // 若stack2长度仍为0,说明队列为空,返回-1 + return -1 +} + + +/** + * Your CQueue object will be instantiated and called as such: + * obj := Constructor(); + * obj.AppendTail(value); + * param_2 := obj.DeleteHead(); + */ \ No newline at end of file diff --git "a/LeetCode/\345\211\221\346\214\207offer/day1_\346\240\210\344\270\216\351\230\237\345\210\227\357\274\210\347\256\200\345\215\225\357\274\211/\347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227_\351\223\276\350\241\250\345\256\236\347\216\260.go" "b/LeetCode/\345\211\221\346\214\207offer/day1_\346\240\210\344\270\216\351\230\237\345\210\227\357\274\210\347\256\200\345\215\225\357\274\211/\347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227_\351\223\276\350\241\250\345\256\236\347\216\260.go" new file mode 100644 index 0000000..7ecbf5a --- /dev/null +++ "b/LeetCode/\345\211\221\346\214\207offer/day1_\346\240\210\344\270\216\351\230\237\345\210\227\357\274\210\347\256\200\345\215\225\357\274\211/\347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227_\351\223\276\350\241\250\345\256\236\347\216\260.go" @@ -0,0 +1,35 @@ +// 题目解析在 用两个栈实现队列.go +// 本文件为 用链表实现的栈 来 实现队列 +// 为解决命名冲突,本文件结构体与函数名后+1 +package main + +import "container/list" + +type CQueue1 struct { + stack1, stack2 *list.List +} + +func Constructor1() CQueue1 { + return CQueue1{ + stack1: list.New(), + stack2: list.New(), + } +} + +func (this *CQueue1) AppendTail1(value int) { + this.stack1.PushBack(value) +} + +func (this *CQueue1) DeleteHead1() int { + if this.stack2.Len() == 0 { + for this.stack1.Len() > 0 { + this.stack2.PushBack(this.stack1.Remove(this.stack1.Back())) + } + } + if this.stack2.Len() != 0 { + e := this.stack2.Back() + this.stack2.Remove(e) + return e.Value.(int) + } + return -1 +} \ No newline at end of file