当前位置: 首页 > news >正文

【LeetCode】剑指 Offer <二刷>(4)

目录

题目:剑指 Offer 09. 用两个栈实现队列 - 力扣(LeetCode)

题目的接口:

解题思路:

代码:

过啦!!!

题目:剑指 Offer 10- I. 斐波那契数列 - 力扣(LeetCode)

题目的接口:

解题思路:

代码:

过啦!!!

写在最后:


题目:剑指 Offer 09. 用两个栈实现队列 - 力扣(LeetCode)

题目的接口:

type CQueue struct {}func Constructor() CQueue {}func (this *CQueue) AppendTail(value int)  {}func (this *CQueue) DeleteHead() int {}/*** Your CQueue object will be instantiated and called as such:* obj := Constructor();* obj.AppendTail(value);* param_2 := obj.DeleteHead();*/

解题思路:

这道题我用 C++ 写的时候是比较简单顺手的,用 STL 可以直接调库调两个栈出来,然后一个作为 inStack,一个作为 OutStack,存入的时候存 inStack,出栈的时候,将 inStack 放进 OutStack 里面,再删除 OutStack 的内容就可以了,

而现在用 golang 来刷这道题,思路不难,主要是怎么样优雅地实现栈结构呢?切片的特性还是很好用的,可以说这下又学会了一个操作,怎么不用下标倒序遍历切片:

this.outStack = append(this.outStack, this.inStack[len(this.inStack)-1])
this.inStack = this.inStack[:len(this.inStack)-1]

不断变小 + 不断取最后一个元素就行了,真是妙啊。具体代码如下: 

代码:

type CQueue struct {inStack []intoutStack []int
}func Constructor() CQueue {return CQueue{}
}func (this *CQueue) AppendTail(value int)  {this.inStack = append(this.inStack, value)
}func (this *CQueue) DeleteHead() int {if len(this.outStack) == 0 {if len(this.inStack) == 0 {return -1}this.in2out()}value := this.outStack[len(this.outStack)-1]this.outStack = this.outStack[:len(this.outStack)-1]return value
}func (this *CQueue) in2out() {for len(this.inStack) > 0 {this.outStack = append(this.outStack, this.inStack[len(this.inStack)-1])this.inStack = this.inStack[:len(this.inStack)-1]}
}/*** Your CQueue object will be instantiated and called as such:* obj := Constructor();* obj.AppendTail(value);* param_2 := obj.DeleteHead();*/

过啦!!!

题目:剑指 Offer 10- I. 斐波那契数列 - 力扣(LeetCode)

题目的接口:

func fib(n int) int {}

解题思路:

这道题就是非常经典的动态规划入门题目,我这里就直接做了,其实还可以进行空间的优化,但是我觉得没有很大的必要,简单的题没必要,难的题你也优化不出来说实话。

代码:

func fib(n int) int {if n <= 1 {return n}dp := make([]int, 101)dp[0] = 0dp[1] = 1for i := 2; i <= 100; i++ {dp[i] = (dp[i-1] + dp[i-2]) % (1e9 + 7)}return dp[n] 
}

过啦!!!

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

http://www.lryc.cn/news/152575.html

相关文章:

  • CentOS7查看和关闭防火墙
  • LeetCode 无重复字符的最长子串 打败100%的人
  • Spring Boot中通过maven进行多环境配置
  • python自动化Selenium的使用
  • 大数据课程K13——Spark的距离度量相似度度量
  • Lambda表达式第四版
  • 自定义类加载器
  • 【Redis】Redis 的学习教程(七)之 SpringBoot 集成 Redis
  • Vlan和Trunk
  • java 批量下载将多个文件(minio中存储)压缩成一个zip包
  • nnUNet v2数据准备及格式转换 (二)
  • ant-vue1.78版监听a-modal遮罩层的滚动事件
  • MATLAB中residue函数用法
  • 攻防世界-Caesar
  • 嵌入式开发-lin总线介绍 一.概述
  • 羊城杯-2023-Crypto
  • RabbitMQ快速上手及讲解
  • 使用多线程std::thread发挥多核计算优势(解答)
  • MySQL分页查询详解:优化大数据集的LIMIT和OFFSET
  • 解构赋值、函数默认值
  • 【已解决】Mybatis 实现 Group By 动态分组查询
  • Android修改默认gradle路径
  • 原生JS+canvas实现炫酷背景
  • Linux学习之NAS服务器搭建
  • 分享码云上8个宝藏又有价值的开源图片编辑器
  • TCP Header都有啥?
  • 无涯教程-Android - AutoCompleteTextView函数
  • 【Docker】 07-安装ElasticSearch、Kibana
  • 【数据结构篇】线性表1 --- 顺序表、链表 (万字详解!!)
  • C语言每日一练--Day(17)