首页
学习
活动
专区
圈层
工具
发布

第N个数字

题目描述 在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...中找到第 n 个数字。...示例 1: 输入: 3 输出: 3 示例 2: 输入: 11 输出: 0 说明: 第11个数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ......里是0,它是10的一部分。 题目中所谓的第 n 个数字,指的是数字构成的字符串中的第 n 位上数字。 解法 观察数字规律可知: 一位数共有: ? 两位数共有: ?...由此可获得第 n 位数字属于哪个分段,即可知 m 的值。由 (n-1)//m 可获得第 n 位数字所属于数值,在该分段所有数值列表的下标。...例如 3 在一位数分段的下标为 2;11 在两位数分段的下标为 0。分段的起始数值为 ? ,则第 n 位数字所属数值为 ? 。第 n 位数字在数值 num 中的下标为 ?

1K20

第n个丑数

【题目描述】 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。...求按从小到大的顺序的第N个丑数。 【思路】 首先想到的是肯定是暴力法,从1,2,3,…循环一直找到给定的第n个丑数,但是这种做法我记得在LeetCode是TLE的。...那么有没有更elegant的方法呢?以下思路来自《剑指offer》第34题。 既然一个个循环不可行,那么就生成第n个丑数呗。...但是注意4也是一个丑数,它可以由2 x 2得到。所以丑数可以再乘以2,3,5得到下一个丑数,唯一要保证的是应该从小到大得到下一个丑数。...所以要分别保留2,3,5的上一个丑数指针,下一个丑数则是三个指针所指的数值分别乘以对应的因子中的最小值。

1.3K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    删除链表的倒数第n个节点

    题目: 思路: 由于这是一个链表,所以我们一般只能获取到一个头结点,然而其他信息我们不确定。所以可以采用双指针的方法。...思路一,利用一个指针获取整个链表元素的总数,利用总数减去目标数,所以我们可以确定要删除的位置。...思路二,利用一个指针先走出目标数目,然后两个指针一起走,那么先走的指针走完时,第二个指针恰好会停在目标元素上。...OutPutLinkedList(result);     }     /**      * 方案2,用双指针,一个先走一定的步数,然后一起走,某一个先抵达就停止      *      * @param...+ 1;         //总数减去倒数的数n,就是要遍历的位置了         for (int i = 1; i < index - 1; i++) {             p2 = p2.

    90920

    「拥抱开源」我的第 N 个开源项目

    例如技术的迭代、逐渐不再维护(俗称的烂尾)等等。 所以,我对 GitHub 开源是非常关注,包括看其他神仙公司、或者程序员大佬们的开源项目。例如:Apache、Google、Alibaba 等等。...---- 起源 2020年是一个灾年。从上帝视角(精神与物质能量守恒定律)来看,当给关上一扇窗户的时候,那必然会打开新的一扇窗户。 那么当上帝给你关掉很多扇窗户的时候,你可以尝试砸开一堵墙 。...于是,在学习大佬的开源项目的时候,突然迸发出了想要自己开源项目的热情(绝对不是捡树枝太累导致的)。 ---- 现状 上周六提交了第一行代码。...今天(本周六),约定了 Commit Message 提交规范、thymeleaf 模版的配置与 demo。 由于只有周末才有时间进行添砖加瓦,所以第一个目标是完成核心三大板块:会员、商品、订单。...---- 小结 作为程序员,开源项目是必须要了解、参与进去的。(免费的东西,它不香吗?) 既然如此,那就主动的参与其中吧。

    78620

    878.第 N 个神奇数字 每日一题 11-22

    原题 一个正整数如果能被 a 或 b 整除,那么它是神奇的。 给定三个整数 n , a , b ,返回第 n 个神奇的数字。因为答案可能很大,所以返回答案 对 10^9 + 7 取模 后的值。...于是乎我的第一个解法横空出世,默认的testCase也通过了。...超时了 哈哈哈 于是开始重新分析题目,发现规律: 一个数里包含的神奇数字(x)的数量= x/a + x/b - x/最小公倍数 代码实现 func nthMagicalNumber(n int,...a int, b int) int { start := min(a, b) // 开始的数从两数较小的数开始 end := n * min(a, b) // 结束的数 到 较小数 * n gbs...有几个神奇数字 mid := (start + end) / 2 cnt = mid/a + mid/b - mid/gbs // 不断调整 左右两边的边界 if cnt >= n {

    45920

    【leetcode刷题】T199-第N个数字

    木又连续日更第62天(62/100) ---- 木又的第199篇leetcode解题报告 数学类型第15篇解题报告 leetcode第400题:第N个数字 https://leetcode-cn.com.../problems/nth-digit ---- 【题目】 在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …中找到第 n 个数字。...里是0,它是10的一部分。 【思路】 本题的第n个数,是将所有数排成一排,按位选取的一个数,概述肯定小于10。...我们可以找到规律: 小于10的一位数,共有9个; 小于100的两位数,共有90个; 小于1000的三位数,共有900个; …… 因此,不断循环判断: i = 0 while n > 0: n -...怎么判断具体是哪一个数呢? 自然数为9 * (10 ** (i-1)) + (n - 1) // (i + 1) 该自然数的第(n-1) % (i+1)位。

    97470
    领券