357. 计算各个位数不同的数字个数(回溯法)

计算各个位数不同的数字个数 题目:https://leetcode-cn.com/problems/count-numbers-with-unique-digits/submissions/ 给定一个非负整数 n,计算各位数字都不同的数字 x 的个数,其中 0 ≤ x < 10n。 1. 首先想到的是暴力版本:从0开始遍历到 10**n,判断每个数字的每一位是否被重复,没有则计数+1;显然这种方法遇到大量数据时... 阅读详情
/**
 * 357. 计算各个位数不同的数字个数
 * @author wsq
 * @date 2020/09/27
	 给定一个非负整数 n,计算各位数字都不同的数字 x 的个数,其中 0 ≤ x < 10n 。

	示例:
	输入: 2
	输出: 91 
	解释: 答案应为除去 11,22,33,44,55,66,77,88,99 外,在 [0,100) 区间内的所有数字。
	
	链接:https://leetcode-cn.com/problems/count-numbers-with-unique-digits
 */
package com.wsq.huishuo;

public class CountNumbersWithUniqueDigits {
	private int uniqueNum = 0;
	/**
	 *	采用回溯法,深度优先遍历所有的情况
	 * @param n
	 * @return
	 */
    public int countNumbersWithUniqueDigits(int n) {
    	int[] availableArr = new int[10];
    	int preNum = 0;
    	findUniqueDigits(availableArr, n, preNum);
    	return uniqueNum;
    }

	private void findUniqueDigits(int[] availableArr, int n, int preNum) {
		// TODO Auto-generated method stub
		if(n == 0) {
//			System.out.println(preNum);
			uniqueNum++;
			return;
		}
		for(int i = 0; i < availableArr.length; ++i) {
			if(availableArr[i] == 0) {
				// 为了解决0、00、000等造成的数据统计遗漏
				int tmpN = (int)(preNum + i * Math.pow(10, n - 1));
				// 首次遍历
				if(tmpN != 0) {					
					availableArr[i] = 1;
				}
				findUniqueDigits(availableArr, n - 1, tmpN);
				availableArr[i] = 0;
			}
		}
	}
	public static void main(String[] args) {
		int n = 2;
		CountNumbersWithUniqueDigits cn = new CountNumbersWithUniqueDigits();
		int ans = cn.countNumbersWithUniqueDigits(n);
		System.out.println(ans);
		
	}
}

2024最新指南:如何用Python批量下载Sentinel-2数据(附避坑清单) 本文提供2024年最新Python批量下载Sentinel-2遥感数据的完整指南,涵盖环境配置、API准备、核心下载流程实现及实战避坑清单。通过智能查询器、断点续传下载器等实用工具,帮助用户高效获取遥感数据,避免常见网络问题和数据完整性验证失败。 阅读详情

相关推荐

ANSYS/ANSYS Workbench生成mnf文件导入到Adams相关问题浅显解释

ANSYS/ANSYS Workbench生成mnf文件导入到Adams相关问题浅显解释。

weixin_45551870的博客 6987

leetcode357. 计算各个位数不同的数字个数(回溯)

给定一个非负整数 n,计算各位数字都不同的数字 x 的个数,其中 0 ≤ x < 10n 。 示例: 输入: 2 输出: 91 解释: 答案应为除去 11,22,33,44,55,66,77,88,99 外,在 [0,100) 区间内的所有数字。 代码 class Solution { Set<Integer> set=new HashSet<>(); int numbers=0; public int countNumbersWithUniq.

weixin_44560620的博客 293

Flink实战项目——城市交通实时监控平台

本项目是与公安交通管理综合应用平台、机动车缉查布控系统等对接的,并且基于交通部门现有的数据平台上,进行的数据实时分析项目。

yangwei2048的博客 839

LeetCode357题计算各个位数不同的数字个数

LeetCode306题累加数 单纯的回溯法,没啥好说的 class Solution { public: int countNumbersWithUniqueDigits(int n) { if(n==0) return 1; if(n==1) return 10; int sum=9; for(int i=9;...

DeaD_PooL_的博客 271

算法系列之十二:多边形区域填充算法--几种边标志填充算法

四、边界标志填充算法 在光栅显示平面上,多边形是封闭的,它是用某一边界色围成的一个闭合区域,填充是逐行进行的,即用扫描线逐行对多边形求交,在交点对之间填充。边界标志填充算法就是在逐行处理时,利用边界或边界颜色作为标志来进行填充的。准确地说,边界标志填充算法不是指某种具体的填充算法,而是一类利用扫描线连贯性思想的填充算法的总称。这类算法有很多种,本篇就介绍几种。 首先介绍一种以边为中心的边缘填充...

java开发指南博客 【转载】 1898

【MMDetection3.0实战】从零构建自定义数据集训练流程

本文详细介绍了使用MMDetection3.0框架从零开始构建自定义目标检测数据集的完整训练流程。内容涵盖环境配置、COCO格式数据准备、核心代码改造、模型配置与训练策略调优,以及最终的模型测试与验证,帮助开发者快速上手并训练自己的检测模型。

l6m7n8的博客 315

计算各个位数不同的数字个数(Leetcode-357)-回溯法/动态规划

题目 原题连接:https://leetcode-cn.com/problems/count-numbers-with-unique-digits/ 知识点 动态规划(回溯超时 ) 思路 对于回溯法,枚举每一个位,用一个数组vis记录访问过的数字即可。唯一需要注意的是,这道题允许001(就是1)这种情况的出现,n位以内都是允许的,回溯法代码当n==8会超时,仅供参考。 动态规划思路(去计算不能满足条件的数目),首先给出状态转移方程再解释: 对于长度为n的数不能满足条件的数目 = 长度为(n-1

KKWriedy的博客 294

Matlab:常见涡旋光束仿真

代码: clc clear all close all %% 环形涡旋光束 N = 200; lambda = 632e-9; %波长为632nm k = 2*pi/lambda; %波数 w0 = 3; %束腰半径 x = linspace(-10,10,N); y = linspace(-10,10,N); [X,Y] = meshgrid(x,y); [t...

zzz997的博客 3万+

leetcode 357. 计算各个位数不同的数字个数

题目链接 https://leetcode-cn.com/problems/count-numbers-with-unique-digits/submissions/ 题目描述 给定一个非负整数 n,计算各位数字都不同的数字 x 的个数,其中 0 ≤ x < 10n。 输入: 2 输出: 91 解释: 答案应为除去 11,22,33,44,55,66,7...

qq_38043440的博客 286

具身智能落地实战:制造业、物流与电力的工业级方案设计

具身智能是一种融合感知、推理与物理执行的智能范式,其核心在于构建具备因果建模能力、多模态闭环反馈和实时动作规划的行动主体。区别于通用AI或传统自动化,它依托多模态大模型、高精度力觉/触觉传感及Sim2Real仿真技术,实现对真实物理环境的深度理解与自适应交互。技术价值体现在可解释性决策、毫秒级跨模态协同与零停机容错能力,已规模化应用于制造业质检、物流破损鉴定、电力绝缘子巡检等强约束工业场景。本文聚焦‘行业应用方案解决方案’这一高频搜索需求,系统拆解从工位筛选、分层架构设计到72小时现场交付的全链路工程方法论

weixin_30952479的博客 304

【ArcGIS遇上Python】ArcGIS10.8 Python代码批量完美实现MODIS NDVI数据格式转换和投影变换

由于论文的需要,将MODIS NDVI数据进行投影变换和格式转换,具体操作可以参照:《ArcGIS10.8完美实现MODIS NDVI数据格式转换和投影变换》,但是该文章中的做法只能一次性实现一景影像的转换,没法批量,虽然ArcGIS中提供了Batch的方法但是需要挨个添加数据,确定输出路径等等,本文就实现以ArcGIS10.8 Python代码批量完美实现MODIS NDVI数据格式转换和投影变换。先来看投影后的效果: 在实现批量投影转换之前,需要两个投影文件:Sinusoidal.prj和MyAl

智慧空间实验室 3816

357. 计算各个位数不同的数字个数

给定一个非负整数 n,计算各位数字都不同的数字 x 的个数,其中 0 ≤ x < 10^n https://leetcode-cn.com/problems/count-numbers-with-unique-digits/ //1.动态规划法,对于i位数字的数来说,如果前i-1位有重复,那么第i位(最低位)放0-9都会重复,得到重复数字dp[i - 1] * 10个; //如果前i-1位没有重复,共有9 * 10 ^ (i - 2) - dp[i - 1]种可能,这时第i位放前i-1位中数字的一

weixin_45798182的博客 184

某物data魔改与变种算法还原(含加解密Py纯算)

某物data加解密、设备指纹魔改、变异、自定义加密分析与纯算还原

吴秋霖的博客 1283

力扣(LeetCode)357

题目地址:https://leetcode-cn.com/probl...题目描述:给定一个非负整数 n,计算各位数字都不同的数字 x 的个数,其中 0 ≤ x &lt; 10的n次方 。 示例: 输入: 2输出: 91 解释: 答案应为除去 11,22,33,44,55,66,77,88,99 外,在 [0,100) 区间内的所有数字。...

weixin_34354945的博客 193

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LeetCode刷题——统计各位数字都不同的数字个数#357#Medium

统计各位数字都不同的数字个数的思路探讨与源码 统计各位数字都不同的数字个数的题目如下图,该题属于数学类和回溯类型的题目,主要考察对于回溯方法的使用和题目数学思路的理解。本文的题目作者想到2种方法,分别是排列组合方法和递推方法,其中排列组合方法使用Java进行编写,而递推方法使用Python进行编写,当然这可能不是最优的解法,还希望各位大佬给出更快的算法。 ...

喷火龙与水箭龟的博客 337

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

357. Count Numbers with Unique Digits (计算各位数字不都不相同的整数个数)

Given a non-negative integer n, count all numbers with unique digits, x, where 0 ≤ x n. Example: Given n = 2, return 91. (The answer should be the total numbers in the range of 0 ≤ x [11,22,33,44,

Alan_Xiang的博客 1283

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

LeetCode 357. Count Numbers with Unique Digits 解题报告

LeetCode 357. Count Numbers with Unique Digits 解题报告

骆小坑的填坑之旅 1020

357. Count Numbers with Unique Digits

Given a non-negative integer n, count all numbers with unique digits, x, where 0 ≤ x n. Example: Given n = 2, return 91. (The answer should be the total numbers in the range of 0 ≤ x [11,22,33

u010400772的博客 252
上一篇: 数据挖掘与知识发现
下一篇: 117. 填充每个节点的下一个右侧节点指针 II(递归)
Lazy mode
博客等级 码龄10年 13粉丝 311原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值