Leetcode--5081. 步进数

如果一个整数上的每一位数字与其相邻位上的数字的绝对差都是 1,那么这个数就是一个「步进数」。

例如,321 是一个步进数,而 421 不是。

给你两个整数,low 和 high,请你找出在 [low, high] 范围内的所有步进数,并返回 排序后 的结果。

 

示例:

输入:low = 0, high = 21
输出:[0,1,2,3,4,5,6,7,8,9,10,12,21]
 

提示:

0 <= low <= high <= 2 * 10^9

思路:一开始暴力解法,但是取值范围2*10^9,呃,明显不可能通过

先把所有步进数求出来放到一个集合,排下序。然后再遍历取其中在low与high范围内的数添加到结果集合
求步进数是用 DFS 的方法,以 1 到 9 开头,每次把当前数乘 10 加上个位数加 1 或减 1。注意一下个位为 0 和 9 的特殊情况。
0 特殊处理。

提交的代码:

class Solution {
   public static List<Integer> countSteppingNumbers(int low, int high) {
        int i;
        List<Integer> list = new ArrayList();
        List<Integer> list1 = new ArrayList();
        list.add(0);
        for(i=1;i<=9;i++)
        {
            DFS(list,i);
        }
        Collections.sort(list);
        for(int in:list)
        {
            if(in>=low&&in<=high)
            {        
                list1.add(in);
            }
        }
        return list1;
        
    }
    public static void DFS(List<Integer> list,int i)
    {
        list.add(i);
        if(i>Integer.MAX_VALUE / 10)
        {
            return;
        }
        if(i%10!=0)
        {
            DFS(list,(i%10-1+i*10));
        }
        if(i%10!=9)
        {
            DFS(list,(i%10+1+i*10));
        }
    }
}

完整代码:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

public class Solution5081 {
    public static List<Integer> countSteppingNumbers(int low, int high) {
        int i;
        List<Integer> list = new ArrayList();
        List<Integer> list1 = new ArrayList();
        list.add(0);
        for(i=1;i<=9;i++)
        {
            DFS(list,i);
        }
        Collections.sort(list);
        for(int in:list)
        {
            if(in>=low&&in<=high)
            {        
                list1.add(in);
            }
        }
        return list1;
        
    }
    public static void DFS(List<Integer> list,int i)
    {
        list.add(i);
        if(i>Integer.MAX_VALUE / 10)
        {
            return;
        }
        if(i%10!=0)
        {
            DFS(list,(i%10-1+i*10));
        }
        if(i%10!=9)
        {
            DFS(list,(i%10+1+i*10));
        }
    }
    public static void main(String[] args)
    {
        int low,high;
        low = 10;
        high =15;
        List list = countSteppingNumbers(low,high);
        Iterator it  = list.iterator();
        while(it.hasNext())
        {
            System.out.println(it.next());
        
        }
        
    }
}

 


可以在DFS中中加入low,high判断条件,这样无需找出所有的步进数。

 

 

提交的代码:

class Solution {
   public static List<Integer> countSteppingNumbers(int low, int high) {
        int i;
        List<Integer> list = new ArrayList();
        if(low==0)
        {
            list.add(0);
        }
        for(i=1;i<=9;i++)
        {
            DFS(list,i,low,high);
        }
        Collections.sort(list);
        return list;
        
    }
    public static void DFS(List<Integer> list,int i,int low,int high)
    {
        if(i>=low&&i<=high)
        {
            list.add(i);
        }
        
        if(i>Integer.MAX_VALUE / 10)
        {
            return;
        }
        if(i%10!=0&&(i%10-1+i*10)>=0&&(i%10-1+i*10)<=high)
        {
            DFS(list,(i%10-1+i*10),low,high);
        }
        if(i%10!=9&&(i%10+1+i*10)>=0&&(i%10+1+i*10)<=high)
        {
            DFS(list,(i%10+1+i*10),low,high);
        }
    }
}

完整代码:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

public class Solution5081 {
    public static List<Integer> countSteppingNumbers(int low, int high) {
        int i;
        List<Integer> list = new ArrayList();
        if(low==0)
        {
            list.add(0);
        }
        for(i=1;i<=9;i++)
        {
            DFS(list,i,low,high);
        }
        Collections.sort(list);
        return list;
        
    }
    public static void DFS(List<Integer> list,int i,int low,int high)
    {
        if(i>=low&&i<=high)
        {
            list.add(i);
        }
        
        if(i>Integer.MAX_VALUE / 10)
        {
            return;
        }
        if(i%10!=0&&(i%10-1+i*10)>=0&&(i%10-1+i*10)<=high)
        {
            DFS(list,(i%10-1+i*10),low,high);
        }
        if(i%10!=9&&(i%10+1+i*10)>=0&&(i%10+1+i*10)<=high)
        {
            DFS(list,(i%10+1+i*10),low,high);
        }
    }
    public static void main(String[] args)
    {
        int low,high;
        low = 0;
        high =21;
        List list = countSteppingNumbers(low,high);
        Iterator it  = list.iterator();
        while(it.hasNext())
        {
            System.out.println(it.next());
        
        }
        
    }
}
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485941.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文件操作的基本流程

1、读模式 f.read()f.readable()#这个文件是否可读&#xff0c;返回布尔值&#xff1b;f.readline(“读模式”)#读取第一行&#xff1b;f.readlines(“读模式”)#读取所有内容 以字符串方式存储在列表内&#xff1b; f open(小重山,r,encodingutf-8) #第一个参数是文件位置&am…

第三代人工智能基础设施背后,是一次技术应用的常识普及运动

来源&#xff1a;脑极体买了新电脑和手机&#xff0c;你会提前安装好杀毒或安全软件&#xff0c;还是等被黑客攻破了才悔之晚矣&#xff1f;处理传染病疫情&#xff0c;是从源头释放药物和疫苗&#xff0c;还是坐等医院的患者超过治疗和处理能力&#xff1f;面对危机舆情&#…

5 ui自适应窗口_Qt编写地图综合应用5-自适应拉伸

一、前言用过echart的人都会遇到一个问题&#xff0c;就算是代码中写了window.onresize echart.resize&#xff0c;也只是横向自适应拉伸填充页面&#xff0c;垂直方向不会变化&#xff0c;除非指定高度才可以&#xff0c;这就比较郁闷了&#xff0c;为何echart本身不会自适应…

Leetcode--85. 最大矩形

给定一个仅包含 0 和 1 的二维二进制矩阵&#xff0c;找出只包含 1 的最大矩形&#xff0c;并返回其面积。 示例: 输入: [ ["1","0","1","0","0"], ["1","0","1","1","…

PowerDesigner生成sql语句时自动导出注释

1、为sql生成注释&#xff0c;操作如下&#xff0c;在其中选择Tools----》Excute commands-----》Edit/Run Script打开的窗口中添加以下信息 ****************************************************************************** * File: name2comment.vbs * Purpo…

为什么俄罗斯的数学那么牛?

编辑 ∑Gemini来源:奇趣数学苑但在国际上也有一个很著名的说法&#xff0c;就是世界上最好的大学&#xff0c;其实是“美国的学校&#xff0c;中国的学生&#xff0c;俄罗斯的教授”。俄罗斯数学家佩雷尔曼虽然俄罗斯现在相比以前来说&#xff0c;尤其明显的是在一些需要大量设…

查看屏幕大小_疑似“iPhone 12” 的OLED屏幕组件泄露

来自可靠的泄密者的新照片显示了即将面世的“ iPhone 12”所搭载的OLED屏幕。这名泄密者以前曾显示过未来苹果产品的准确图像&#xff0c;此前曾展示过苹果A14芯片组的早期图片&#xff0c;并声称“ iPhone 12”将配备20W电源适配器。现在他在推特上发布了一张照片&#xff0c;…

Leetcode--198. 打家劫舍

你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定一个代表每个房屋存放金额的…

搭建Hexo博客(一)-创建Hexo环境

Hexo配合github&#xff0c;可以创建自己的博客。基本原理是使用Hexo生成静态页面&#xff0c;发布到github上。在本地需要搭建Hexo环境。 1、安装nodejs 下载并安装NodeJS&#xff0c;官网地址&#xff1a;https://nodejs.org/en/ 2、安装完后&#xff0c;查看安装情况 1 node…

python logging模块的作用及应用场景_Python logging模块原理解析及应用

一、logging日志模块等级常见log级别从高到低&#xff1a;CRITICAL 》ERROR 》WARNING 》INFO 》DEBUG&#xff0c;默认等级为WARNING&#xff0c;即>WARNING级别的log才输出。日志等级(level)描述CRITICAL当发生严重错误&#xff0c;导致应用程序不能继续运行时记录的信息E…

Nature:2020年最佳科学影像,每一张都是壁纸,每一张都是历史

文章来源&#xff1a;学术头条2020年是独一无二的一年。COVID-19大流行将科学推到了最前沿&#xff0c;并深刻影响了人们的生活。但是这一年也产生了许多与病毒无关的新影像。从薄薄的太阳能电池&#xff0c;到经过基因编辑的鱿鱼&#xff0c;下面就是Nature新闻和艺术团队评选…

Leetcode--213. 打家劫舍Ⅱ

你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋&#xff0c;每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈&#xff0c;这意味着第一个房屋和最后一个房屋是紧挨着的。同时&#xff0c;相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚…

转 从红帽、GitHub和Docker看开源商业模式的进阶

从红帽、GitHub和Docker看开源商业模式的进阶 发表于2014-12-16 10:26| 7594次阅读| 来源http://stratechery.com/| 0 条评论| 作者Ben ThompsonDocker红帽GitHub开源CoreOS摘要&#xff1a;从技术角度来说&#xff0c;Docker无疑是可圈可点的&#xff0c;比如“write once run…

antimalware可以关闭吗_iPhone最好关闭这4个设置,手机流畅还省电

你抢到新款的iPhone12了吗&#xff1f;80%的小伙伴都会忽略的设置&#xff0c;你的iPhone手机最好关闭以下这4个设置。①关闭ios系统更新操作步骤&#xff1a;打开【设置】-【通用】-【软件更新】-【自动更新】-【下载iOS更新】&#xff0c;关闭即可。这样就不会莫名其妙地下载…

Leetcode--221.最大正方形

在一个由 0 和 1 组成的二维矩阵内&#xff0c;找到只包含 1 的最大正方形&#xff0c;并返回其面积。 示例: 输入: 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 输出: 4 思路&#xff1a;和最大长方形类似&#xff08;可以参照https://mp.csdn.net/postedit/102420219&…

tableau连接mysql_tableau 连接mysql的操作步骤

一&#xff1a;下载并安装好以下应用程序&#xff1a;1.数据库mysql2.数据库管理工具navicat premium3.数据可视化工具tableau4.mysql对应版本的ODBC驱动包二&#xff1a;配置ODBC1.控制面板→系统和安全→管理工具中找到"数据源ODBC"&#xff0c;并启动它&#xff0…

MVVM Light Toolkit使用指南

原文地址&#xff1a; https://blog.csdn.net/ldld1717/article/details/77040077概述MVVM Light Toolkit是一个Android MVVM 轻量级工具库&#xff0c;主要目的是更快捷方便的构建Android MVVM应用程序&#xff0c;工具库添加了一些Data Binding 不支持的属性&#xff0c;还有…

段永朝:界面——之内、之外与之间

来源&#xff1a;苇草智酷01画一个圈儿&#xff0c;就把平面分成圈内&#xff0c;圈外。这个圈儿&#xff0c;就成了界面。垒一道墙&#xff0c;就把空间分成墙里&#xff0c;墙外。这个墙&#xff0c;就成了界面。看一眼手机上的钟表&#xff0c;那一刻闪现的数字&#xff0c;…

Leetcode--5. 最长回文子串

给定一个字符串 s&#xff0c;找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1&#xff1a; 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2&#xff1a; 输入: "cbbd" 输出: "bb"…

mysql面试考点_mysql面试知识点

1 引擎-MyISAM和InnoDB的区别a 是否支持行级锁 :MyISAM 只有表级锁(table-level locking)&#xff0c;而InnoDB 支持行级锁(row-level locking)和表级锁,默认为行级锁。b 是否支持事务和崩溃后的安全恢复&#xff1a;MyISAM 强调的是性能&#xff0c;每次查询具有原子性,其执行…