编程练习(第十七周)

来源:互联网 发布:sql语句实现分页查询 编辑:程序博客网 时间:2024/05/22 09:07

题目来源:https://leetcode.com

600. Non-negative Integers without Consecutive Ones

DescriptionHintsSubmissionsSolutions
  • Total Accepted: 1587
  • Total Submissions: 6069
  • Difficulty: Hard
  • Contributors:sanxi

Given a positive integer n, find the number of non-negative integers less than or equal to n, whose binary representations do NOT containconsecutive ones.

Example 1:

Input: 5Output: 5Explanation: Here are the non-negative integers <= 5 with their corresponding binary representations:0 : 01 : 12 : 103 : 114 : 1005 : 101Among them, only integer 3 disobeys the rule (two consecutive ones) and the other 5 satisfy the rule. 

Note: 1 <= n <= 109



代码如下:


int findIntegers(int num) {    string str="";    while(num>0)str+=num%2+'0',num/=2;    int l=str.length();    vector<int> arr(l+1,1);    for(int i=2;i<=l;i++)arr[i]=arr[i-1]+arr[i-2];    int result=1,pre=0;    for(int i=l;i>=0;i--)    {        if(str[i-1]=='1')        {            result+=arr[i];            if(pre==1)break;        }        pre=str[i-1]=='1';    }    return result-pre;}

原创粉丝点击