Google算法题:不包含连续1的非负整数
来源:互联网 发布:网络电视遥控怎么开 编辑:程序博客网 时间:2024/06/06 01:25
题目
题目来源:Link
分析
每一步的选择都依赖前一步的选择,是前面选择的组合,子问题重合,所以用动态规划
代码
package com.graph;import java.util.*;public class Solution {public int solve(int n){if(n==0) return 1;String binary = Integer.toBinaryString(n);int len=binary.length();int[] f = new int[len+1];f[0]=1;f[1]=2;//计算场i的二进制位符合要求的个数for(int i=2; i<=len; i++) {f[i] = f[i-1]+f[i-2];}//计算0~n的符合要求的总个数int sum=0;for(int i=0, k=len; i<len; i++,k--) {if(binary.charAt(i)=='1') {sum+=f[k-1];if(i>0 && binary.charAt(i-1)=='1') {return sum;}}}//先前没有return,到这里,说明n本身没有算进去sum++;return sum;}public static void main(String[] args) {Solution s = new Solution();System.out.println(s.solve(9));}}
阅读全文
0 0
- Google算法题:不包含连续1的非负整数
- 给定一个正整数n,找到小于或等于n的非负整数,其二进制表示不包含连续的整数。
- 计算两个非负整数的最大公约数(欧几里得算法)
- 用欧几里得算法求两个非负整数的最大公约数
- leetcode 600. Non-negative Integers without Consecutive Ones 非负整数不包括连续的1 + DP动态规划
- 【算法题】非负整数的各位相加,直至变成个位数
- 连续非负整数和为某个数
- 包含负整数的桶排序
- 扩展欧几里德算法 x的最小非负整数解 xy是否有非负整数解
- 小于k的非负整数
- 非负的高精度整数类实现
- 打印非负整数阶乘的函数
- 计算两个非负整数的最大公约数
- 非负整数的O(n)基数排序
- 求两个非负整数的最大公约数
- 计算两个非负整数的最大公约数
- 给定一个由非负整数和整数m组成的数组,可以将该数组分成m个非空的连续子数组。 写一个算法来最小化这些m个子阵列之间的最大和。
- 高精度非负整数
- python爬虫学习第十二天
- JDK 安装
- Vivado安装教程补丁
- 值得思考的JavaScript代码
- CSS选择器及其优先级
- Google算法题:不包含连续1的非负整数
- Protocol Buffer基本语法
- 树回归
- [树形DP]BZOJ 4033—— [HAOI2015]树上染色
- 牛顿法开平方
- HDU
- uva 12932
- PHP格式大全
- [001]新手,用java面向过程思维写的五子棋小游戏。