这篇文章主要为大家展示了“golang刷leetcode 技巧之如何解决交换数字、三步问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“golang刷leetcode 技巧之如何解决交换数字、三步问题”这篇文章吧。
创新互联是一家专注于网站建设、网站制作与策划设计,玉溪网站建设哪家好?创新互联做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:玉溪等地区。玉溪做网站价格咨询:13518219792
编写一个函数,不用临时变量,直接交换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
以上是“golang刷leetcode 技巧之如何解决交换数字、三步问题”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!
文章名称:golang刷leetcode技巧之如何解决交换数字、三步问题
文章出自:http://lswzjz.com/article/jgjddc.html