首页 > 其他分享 >剑指Offer 43. 1~n 整数中 1 出现的次数

剑指Offer 43. 1~n 整数中 1 出现的次数

时间:2023-09-07 16:57:33浏览次数:34  
标签:tmp 10 nums int res Offer 43 整数

题目链接: 剑指Offer 43. 1~n 整数中 1 出现的次数

题目描述:

解法思路:

代码:

func countDigitOne(n int) int {
	//思路
	if n == 0 {
		return 0
	}
	//求出该数的各个位上的数字,保存到nums中
	var nums []int
	tmp := n
	for tmp != 0 {
		a := tmp % 10
		nums = append(nums, a)
		tmp /= 10
	}
	var l, r, t, res int

	for i := len(nums) - 1; i >= 0; i-- {
		l = 0 //表示左边
		r = 0 //右边
		t = 1
		for j := len(nums) - 1; j > i; j-- {
			l = l*10 + nums[j]
		}
		for j := i - 1; j >= 0; j-- {
			r = r*10 + nums[j]
			t *= 10
		}
		res += l * t
		if nums[i] == 1 {
			res += r + 1
		} else if nums[i] > 1 {
			res += t
		}
	}
	return res
}

标签:tmp,10,nums,int,res,Offer,43,整数
From: https://www.cnblogs.com/lxing-go/p/17685415.html

相关文章

  • 剑指 Offer 57 - II. 和为s的连续正数序列
    输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 示例1:输入:target=9输出:[[2,3,4],[4,5]]示例2:输入:target=15输出:[[1,2,3,4,5],[4,5,6],[7,8]]classSolution{publici......
  • 剑指 Offer 33. 二叉搜索树的后序遍历序列
    输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树:5/\26/\13示例1:输入:[1,6,3,2,5]输出:false示例2:输入:[1,3,2,6,5]输出:truec......
  • 剑指 Offer 42. 连续子数组的最大和
    输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。 示例1:输入:nums=[-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组[4,-1,2,1]的和最大,为6。classSolution{publicintmaxSubArray(int[]nums){......
  • 剑指 Offer 43. 1~n 整数中 1 出现的次数(困难)
    题目:classSolution{public:intcountDigitOne(intn){//mulk表示10^k//在下面的代码中,可以发现k并没有被直接使用到(都是使用10^k)//但为了让代码看起来更加直观,这里保留了klonglongmulk=1;intans=0;......
  • 剑指 Offer 41. 数据流中的中位数
    如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。例如,[2,3,4]的中位数是3[2,3]的中位数是(2+3)/2=2.5设计一个支持以下两......
  • 剑指 Offer 20. 表示数值的字符串
    说实话本题虽然不难,但是对边界问题的处理超乎想象(一不小心就越界访问),”简单“的难度还是说明博主本身太菜了。本题的主要考点是双指针以及对标准库(对c++来说)一些函数的运用。处理的中心思想是:先将整个字符串反转,而后再通过双指针提取其中的各个单词,而后再将其反转。这样的处理......
  • 43、Flink之Hive 读写及详细验证示例
    Flink系列文章[1、Flink部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接][13、Flink的tableapi与sql的基本概念、通用api介绍及入门示例][14、Flink的tableapi与sql之数据类型:内置数据类型以及它们的属性][15、Flink的t......
  • 2023-09-05:请用go语言编写。一个图像有n个像素点,存储在一个长度为n的数组arr里, 每个像
    2023-09-05:请用go语言编写。一个图像有n个像素点,存储在一个长度为n的数组arr里,每个像素点的取值范围[0,s]的整数,请你给图像每个像素点值加上一个整数k(可以是负数),像素值会自动截取到[0,s]范围,当像素值<0,会更改为0,当新像素值>s,会更改为s,这样就可以得到新的arr,想让所有像素点的......
  • 整数分解方法——腾讯2017春招真题
    如下示例:1:共0种分解方法;2:共0种分解方法;3:3=2+1共1种分解方法;4:4=3+1=2+1+1共2种分解方法;5:5=4+1=3+2=3+1+1=2+2+1=2+1+1+1共5种分解方法6:6=5+1=4+2=4+1+1=3+2+1=3+1+1+1=2+2+1+1=2+1+1+1+1共7种分解方法以此类推,求一任意整数num有几种分解方法?思路:对于数num,按照分解......
  • 剑指 Offer 65. 不用加减乘除做加法(简单)
    题目:classSolution{public:intadd(inta,intb){while(b){//总体思路:上一次产生的进位数*进制数+本位数,进制数为0的时候直接返回本位数即可intcarry=a&b;//计算进位a=a^b;//计算本位b......