Non-negative Integers without Consecutive Ones LeetCode solution in Java
1class Solution {2public int findIntegers(int n) {3int val = 0, res = 0, cn = n, digi = 0, prevdig = 0, i; // digi means bin digi4while (cn > 0) {5cn = cn >> 1;6digi++;7}8int dp[] = new int[digi + 1];9dp[0] = 1;10dp[1] = 2;11for (i = 2; i <= digi; i++) dp[i] = dp[i - 1] + dp[i - 2];12digi++;13while (digi-- >= 0) {14if ((n & (1 << digi)) > 0) {15res += dp[digi];16if (prevdig == 1) return res;17prevdig = 1;18} else prevdig = 0;19}2021return res + 1;22}23}