Google面试题:数字计数
来源:互联网 发布:中国软件 综合排名 编辑:程序博客网 时间:2024/06/05 19:27
题目
题目来源:Link
分析
代码
package com.graph;import java.util.*;public class Solution{List<Integer> factorial = new ArrayList<Integer>();public int solve(int n){if (n==0) {//易遗漏return 1;}if(n>10) n=11;n++;//转成实际位数factorial.add(1);//n<=10int[] nums = new int[n+1];int t=1;int res=0;for(; t<n; t++){if(t==1) {//易遗漏nums[t] = 10;}else {//对于首位,为1~9种选择//剩下t-1位,为9种选择nums[t] = 9*(getFactorial(9)/getFactorial(9-(t-1)));//之前考虑遗漏被除数}res = res+nums[t];}System.out.println(res);return res;}int getFactorial(int fac){int size = factorial.size();if(fac<=size){return factorial.get(fac-1);}for(int i=size+1; i<=fac; i++){int topIndex = factorial.size()-1;int tmp = factorial.get(topIndex)*i;factorial.add(tmp);}return factorial.get(factorial.size()-1);}//优化方法,参考原始题目代码//动态规划public int solve_dp(int n) {//不能理解题给的公式return 0;}//排列组合public int solve_pe(int n) {if(n==0) return 1;if(n>10) n=10;int ans = 1;int mul = 9;for(int i=n-1; i>=0; i--) {if(i==0) {ans+=mul;}else {ans+=(n-i+1)*mul;}mul = mul*(10-n+i-1);}return ans;}public static void main(String[] args) {Solution s = new Solution();s.solve(2);//s.solve(new int[] {1,2,4,8,7,9,6,3});}}
阅读全文
0 0
- Google面试题 | 数字计数
- Google面试题:数字计数
- Google 2016 面试题5 | 岛屿计数2
- Google 2016 面试题5 | 岛屿计数2
- MS/Google面试题:寻找丢失的数字
- Google面试题 数组中第K小的数字
- Google面试题 数组中第K小的数字
- 面试题:应用计数原理
- Google 2016 面试题6 | Count of Smaller Numbers After Self(数组计数)
- Google 2016 面试题6 | Count of Smaller Numbers After Self(数组计数)
- Google 面试题讨论
- 小小Google面试题
- google面试题
- 面试题2-- Google
- google面试题
- google面试题
- Google 的面试题
- Google面试题
- LoadRunner脚本编写之一
- JS内置对象-String对象、Date日期对象、Array数组对象、Math对象
- phantomjs robot framework [Errno 9] Bad file descriptor
- Spring Batch -----Hello world!
- 基础算法之二 直接插入排序的三种实现
- Google面试题:数字计数
- 无法打开包含文件:“C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\src\mfc\occimpl.h”
- Dagger2
- raw格式数据转BMP格式(OpenCV)
- 如何使用Dockerfile构建镜像
- okhttp3去掉https证书的client
- slidingMenu (侧拉)
- Rightmost Digit 【hdu-1061】【快速幂】
- SSM调用oracle存储过程实现权限菜单