由最多N个给定数字集组成的数字 Numbers At Most N Given Digit Set
Posted hyserendipity
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了由最多N个给定数字集组成的数字 Numbers At Most N Given Digit Set相关的知识,希望对你有一定的参考价值。
2019-10-14 22:21:29
问题描述:
问题求解:
暴力求解必然会超时,那么就需要考虑数学的方法来降低时间复杂度了。
public int atMostNGivenDigitSet(String[] D, int N) { int n = D.length; int res = 0; char[] chs = new char[n]; for (int i = 0; i < n; i++) { chs[i] = D[i].charAt(0); } char[] nums = String.valueOf(N).toCharArray(); int len = nums.length; for (int i = 1; i < len; i++) res += Math.pow(n, i); int i = 0; while (i < len) { for (char c : chs) { if (c < nums[i]) res += Math.pow(n, len - i - 1); } if (!isIn(nums[i], chs)) break; i++; } return i == len ? res + 1 : res; } private boolean isIn(char c, char[] chs) { for (char ch : chs) { if (ch == c) return true; } return false; }
以上是关于由最多N个给定数字集组成的数字 Numbers At Most N Given Digit Set的主要内容,如果未能解决你的问题,请参考以下文章
这看起来与旧问题相似但不同。给定一个大小为 n 的数组(允许重复的数字),找到缺少的 2 个数字 [重复]
357 Count Numbers with Unique Digits 计算各个位数不同的数字个数
[AGC011E] Increasing Numbers [数学]
给定一个只包含正整数的非空数组,返回该数组中重复次数最多的前N个数字 ,返回的结果按重复次数从多到少降序排列(N不存在取值非法的情况)