首页 > 其他分享 >剑指offer——整数中1出现的次数

剑指offer——整数中1出现的次数

时间:2022-11-01 11:09:46浏览次数:62  
标签:10 return offer int sum 整数 次数 num


题目描述:
求出113的整数中1出现的次数,并算出1001300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。

写一个都能想到但是效率不高的算法吧。
思路:遍历所有从1~n的数字,然后查看每个数字中1的个数是多少,最后累加起来

class Solution {
public:
int NumberOf1Between1AndN_Solution(int n)
{
if(n<=0)
return 0;
if(n==1)
return 1;
int sum=0;
//遍历所有n范围内的数字
for(int i=1;i<=n;i++){
sum+=count_num1(i);
}
return sum;
}
//计算每个数字中1的个数
int count_num1(int n){
int num=0;
while(n){
if(n%10==1)
num++;
n/=10;
}
return num;
}
};


标签:10,return,offer,int,sum,整数,次数,num
From: https://blog.51cto.com/u_15855860/5812288

相关文章

  • 剑指offer——数字在排序数组中出现的次数
    题目描述:统计给定数字k在排序数组中出现的次数思路1:最容易想到但是效率不高的一个方法就是遍历整个数组,统计k出现的次数(for循环就能解决,不赘述)思路2:由于题目给出是排序......
  • 剑指offer——二叉树的深度
    题目描述:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。思路1:按照深度优先遍历,设置一个全局变量ma......
  • 剑指offer——不用加减乘除做加法
    题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路:分三步1)不考虑进位,只是对两个数进行按位异或(二进制异或就是对应位相加)2)统计进......
  • 剑指offer——圆圈中最后剩下的数字
    题目描述:每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋......
  • 剑指offer——求1+2+3+...+n的和
    题目描述:求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)思路1:使用构造函数,创建n个类对象,利用构造函数进行求和计算clas......
  • 剑指offer——扑克牌中的顺子
    题目描述:LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如......
  • 使用int128记录大整数
    部分编译器支持128bit的整数表示,但是需要手写输入输出。注意:__int128等价于__int128_t,不存在int128和int128_t。输出函数:voidPrint128(__int128num){if(num<0......
  • 直播带货源码,js实现整数和小数分开并添加不同的样式
    直播带货源码,js实现整数和小数分开并添加不同的样式1.思路1.提前写好整数部分和小数部分class样式2.再把数值转换成字符串形式,split()方法用分隔符把整数和小数部分......
  • List中某个元素出现次数
    publicstaticList<String>getDuplicateElements(List<UnionResponseData>unionResponseData){returnunionResponseData.stream().collect......
  • 13. 罗马数字转整数
    题目链接:https://leetcode.cn/problems/roman-to-integer/题目描述:将给定的罗马数字转化为整数思路:一般的罗马数字都是从左到右依次变小,但是有几种情况小的罗马数字在左......