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

力扣967:连续差相同的数字

力扣967:连续差相同的数字

  • 题目
  • 思路
  • 代码

题目

返回所有长度为 n 且满足其每两个连续位上的数字之间的差的绝对值为 k 的 非负整数 。

请注意,除了 数字 0 本身之外,答案中的每个数字都 不能 有前导零。例如,01 有一个前导零,所以是无效的;但 0 是有效的。

你可以按 任何顺序 返回答案。

思路

看见任何顺序,回溯就来了。
想要使用回溯我们就得先判断回溯得结束条件是什么,这道题很简单,回溯的结束条件就是数字的长度是否等于n。之后我们观察题目来想想怎么回溯,首先我们看题目里的前导零这一个条件所以我们在插入第一个数字的时候就要判断数字的长度大于1并且第一个数字不能为0。然后我们发现两个数字之间要有条件即差的绝对值为k所以我们就需要判断是当前值减k还是当前值加k。如果当前值加k小于10那就加k如果当前值减k大于等于0那就是减k。在有了这些信息后这道题就很简单了。

代码

class Solution {
public:void dfs(vector<int>& res, string& tmp, int i, int n, int k) {if (tmp.size() == n) {res.push_back(stoi(tmp));return;}// 判断是插入i+k还是i-k// 如果下一个插入的数字小于10if (i + k < 10) {// 直接插入然后继续dfstmp += to_string(i + k);dfs(res, tmp, i + k, n, k);tmp.pop_back();}// 如果i-k大于等于0并且k不等于0if (k != 0 && i - k >= 0) {tmp += to_string(i - k);dfs(res, tmp, i - k, n, k);tmp.pop_back();}}vector<int> numsSameConsecDiff(int n, int k) {vector<int> res;string tmp;for (int i = 0; i < 10; i++) {if (n > 1 && i == 0) {continue;}tmp = to_string(i);// 回溯dfs(res, tmp, i, n, k);}return res;}
};
http://www.dtcms.com/a/312782.html

相关文章:

  • Mysql1
  • Docker-03.快速入门-部署MySQL
  • python的蛋糕店管理系统
  • MySQL的创建管理表:
  • 求根到叶子节点数字之和
  • 【数据分享】南京诗歌文学地理数据集(获取方式看文末)
  • 电机结构设计与特性曲线分析:基于MATLAB和FEMM的仿真研究
  • 6. 平台总线
  • 机器学习第四课之决策树
  • Shell 脚本流程控制语句详解(四):while 循环详解
  • lua table常用函数汇总
  • Django 序列化详解:从 Model 到 JSON,全面掌握数据转换机制
  • 使用AndroidStudio调试Framework源码
  • 腾讯人脸识别
  • 数据治理:DQC(Data Quality Center,数据质量中心)概述
  • [嵌入式embed]C51单片机STC-ISP提示:正在检测目标单片机
  • 《前端无障碍设计的深层逻辑与实践路径》
  • MyBatis动态SQL精要:从<if>到<foreach>的灵活拼接之道
  • 高质量数据集|建设三大难点
  • [硬件电路-140]:模拟电路 - 信号处理电路 - 锁定放大器概述、工作原理、常见芯片、管脚定义
  • [硬件电路-133]:模拟电路 - 信号处理电路 - 电荷放大器概述、工作原理、常见芯片、管脚定义
  • 深度学习(鱼书)day10--与学习相关的技巧(后两节)
  • 仿TCmalloc内存分配器
  • 后端研发转型爬虫实战:Scrapy 二开爬虫框架的避坑指南
  • C++入门自学Day5-- C/C++内存管理(续)
  • jvm之jconsole的使用
  • Maven 常用命令详解
  • react native中markdown添加数学公式的支持
  • 文明存续的时间博弈:论地球资源枯竭临界期的技术突围与行动紧迫性
  • STM32-驱动OLED显示屏使用SPI(软件模拟时序)实现