[LeetCode]Numbers With Same Consecutive Differences@Golang

Numbers With Same Consecutive Differences
Return all non-negative integers of length N such that the absolute difference between every two consecutive digits is K.

Note that every number in the answer must not have leading zeros except for the number 0 itself. For example, 01 has one leading zero and is invalid, but 0 is valid.

You may return the answer in any order.

Example

Input: N = 3, K = 7
Output: [181,292,707,818,929]
Explanation: Note that 070 is not a valid number, because it has leading zeroes.

Solution

func numsSameConsecDiff(N int, K int) []int {
    nums := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
    if N==1{
        return nums
    }
    ret := nums[1:]
    for i:=1;i<N;i++ {
        tmp:= make([]int, 0, len(ret)*2)
        for _,v := range ret{
            r := v%10
            if K>0 && r+K<10{
                tmp = append(tmp, v*10+r+K)
            }
            if r-K>=0{
                tmp = append(tmp, v*10+r-K)
            }
        }
        ret = tmp
    }
    return ret
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值