问题描写叙述: 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.比如输入12,从1到12这些整数中包括1 的数字有1.10.11和12.1一共出现了5次. 这是一道广为流传的google面试题. 算法: 第一种思路:对从1到n的每一个数进行统计,统计的结果相加.算法复杂度为O(n) 另外一种思路:举例说明. 令n=321.则: 它的个位上出现1的形式为XY1,次数和为33(由于十位百位上可能出现的组合为0-32) 它的十位上出现1的次数和较为复杂,形式为X1Y,X的取值范围为0-…
题目: 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次. 找工作,准备看写题目,题目说是Google面试题,遂很认真地自己做了下. 找规律: 其实可以从中找出数列的规律.求从1到n数字中的1共有多少个,会想到按照数字的位数来观察观察,比如1位数字里(从1到9)共有1个,记W[1]=1:2位数字里(01到99)共有W[2]个,3位数字(001到999)共有W[3]个,定义如下数组: }; in…
[面试题032]从1到n整数中1出现的次数 题目:     输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.     例如输入12,从1到12这些整数中包含1的数字有1,10,11和12,1出现了5次.   思路一:     对每一个数字做判断,把1出现的数字累加.     可以通过对10取余,判断这个数字个位上的数字是不是等于1,然后这把这个数字除以10,相当于是10进制下面的向右边移动了一位.       如果输入数字为n,n有logn位,那么我们要判断每一位是不是1,那么它…
这是一道广为流传的google面试题.用最直观的方法求解并不是很难,但遗憾的是效率不是很高:而要得出一个效率较高的算法,需要比较强的分析能力,并不是件很容易的事情.当然,google的面试题中简单的也没有几道. 硬上:O(nlogn) int NumberOf1(unsigned int n); int NumberOf1Between1AndN_Solution1(unsigned int n) { ; ; i <= n; ++ i) number += NumberOf1(i); retur…
题目: 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数. 思路: 比如求1到34597中1出现的次数.首先划分两段:1到4597,4598到34597.第二段的话,最高位1出现的次数为10000~19999,总共10000次(假设n的位数为b,即10的b次方个):另…
方法一:直观来看,遍历1到n,每个数去做%10的循环判断 int Number1_B_1toN( int n){ int sum=0; for(int i=1;i<=n;i++){ int k=i; while(k!=0){ if(k%10==1) sum++; k/=10;          } } return sum; } 方法二:无需遍历每一个数,只对最大的位数进行分解,就是当前位*高位的数字+当前低位数字范围中,当前位为1的数量 如 32629:当前为6,百位 .32*100+(0到6…
题目: 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1的数字有1,10,11和12,一共出现了5次. 思路: 1.累加法 累加1到n中每个整数1出现的次数. 求每个整数1出现的个数:通过对10求余数,判断整数的个位是否为1,如果商不为0,则继续除以10再判断个位数字是否为1. 时间复杂度:O(nlogn) 2.递归 以21345为例,把1到21345的所有数字分为两段,1-1345,1346-21345. 先看1346-21345,1的出…
http://ac.jobdu.com/problem.php?pid=1534 题目1534:数组中第K小的数字 时间限制:2 秒 内存限制:128 兆 特殊判题:否 提交:1120 解决:208 题目描述: 给定两个整型数组A和B.我们将A和B中的元素两两相加可以得到数组C.譬如A为[1,2],B为[3,4].那么由A和B中的元素两两相加得到的数组C为[4,5,5,6].现在给你数组A和B,求由A和B两两相加得到的数组C中,第K小的数字. 输入: 输入可能包含多个测试案例.对于每个测试案例,…
Google的面试题在刁钻古怪方面相当出名,甚至已经有些被神化的味道.这个话题已经探讨过很多次,而科技博客 BusinessInsider这两天先是贴出15道Google面试题并一一给出了答案,其中不少都是流传很广的,因此让人感到不过瘾,不少人兴奋地表 示“让难题来得更猛烈吧!”,于是今天又出了续篇,再次贴出了另外15道Google的面试题,但却没有给出答案. 怎么样?下边先来热热身,再来看看你有没有可能去Google工作吧! 第一题:多少只高尔夫球才能填满一辆校车?(职位:产品经理) 解析:通…
date: 2018-12-14 13:34:56 updated: 2018-12-14 13:34:56 Google面试题(选自公众号) 问题 把你的手机拨号页想象成一个棋盘.棋子走只能走"L"形状,横着两步,竖着一步:或者竖着两步,横着一步. 现在,假设你拨号只能像棋子一样走"L"形状.每走完一个"L"形拨一次号,起始位置也算拨号一次.问题:从某点开始,在N步内,你可以拨到多少不同的数字? 讨论 每次面试,我基本都会分成两个部分:首先我们…