golang刷leetcode 技巧之如何解决交换数字、三步问题

发布时间:2021-12-16 09:06:59 作者:小新
来源:亿速云 阅读:166

这篇文章主要为大家展示了“golang刷leetcode 技巧之如何解决交换数字、三步问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“golang刷leetcode 技巧之如何解决交换数字、三步问题”这篇文章吧。

编写一个函数,不用临时变量,直接交换numbers = [a, b]中a与b的值。

示例:

输入: numbers = [1,2]

输出: [2,1]

提示:

numbers.length == 2

解题思路:

方法一:

求和

方法二:

异或

代码实现:

func swapNumbers(numbers []int) []int {   numbers[0]+=numbers[1]   numbers[1]=numbers[0]-numbers[1]   numbers[0]-=numbers[1]   return numbers}
func swapNumbers(numbers []int) []int {   numbers[0]^=numbers[1]   numbers[1]=numbers[0]^numbers[1]   numbers[0]^=numbers[1]   return numbers}

三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。

示例1:

 输入:n = 3

 输出:4

 说明: 有四种走法

示例2:

 输入:n = 5

 输出:13

提示:

n范围在[1, 1000000]之间

解题思路:

1,递归

到达第n步,可以是从n-3步迈3步,或者n-2迈2步,或者n-1迈1步

2,dp

状态转移方程,f(n)=f(n-3)+f(n-2)+f(n-1)

由于用到了n-3,n-2,n-1所以递增方式

func waysToStep(n int) int {   if n==1{       return 1   }   if n==2{       return 2   }   if n==3{       return 4   }   return (waysToStep(n-3)+waysToStep(n-2)+waysToStep(n-1))%1000000007}
func waysToStep(n int) int {    dp:=make([]int,n)       if n==1{       return 1   }   if n==2{       return 2   }   if n==3{       return 4   }   dp[0]=1   dp[1]=2   dp[2]=4   for i:=3;i<n;i++{       dp[i]=(dp[i-3]+dp[i-2]+dp[i-1])%1000000007   }   return dp[n-1]}

以上是“golang刷leetcode 技巧之如何解决交换数字、三步问题”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. golang刷leetcode 技巧之如何实现特定深度节点链表
  2. golang刷leetcode技巧之如何解决节点间通路问题

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

golang leetcode

上一篇:Cron表达式是怎样的

下一篇:Linux sftp命令的用法是怎样的

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》