首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

n丑数

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

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

    删除链表的倒数 N 结点 js实现

    给你一链表,删除链表的倒数 n 结点,并且返回链表的头结点。...示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: 输入:head = [1], n = 1 输出:[] 示例 3: 输入:head = [1,2...], n = 1 输出:[1] 提示: 链表中结点的数目为 sz 1 <= sz <= 30 0 <= Node.val <= 100 1 <= n <= sz 原题地址 /** * Definition...使用双指针 // 第一指针先走 n 步,然后两指针一起走,当第一指针到达末尾的时候,第二指针刚好指向被删除的节点位置 // 为了找到被删除的节点的上一节点,方便删除,所以定义一哑结点,作为...// 先将第一指针走 n 步 for(let i=0;i<n;i++){ first = first.next; } // 两指针同时走,当 first节点不存在

    53920

    删除链表的倒数n节点

    题目: 思路: 由于这是一链表,所以我们一般只能获取到一头结点,然而其他信息我们不确定。所以可以采用双指针的方法。...思路二,利用一指针先走出目标数目,然后两指针一起走,那么先走的指针走完时,第二指针恰好会停在目标元素上。...OutPutLinkedList(result);     }     /**      * 方案2,用双指针,一先走一定的步数,然后一起走,某一先抵达就停止      *      * @param...n; i++) {             p2 = p2.next;         }         //当指针p2走完n步以后,让指针p2和p1同时向前走,直到p2走到最后一节点,即p2->...next=NULL         // 整个过程p2和p1之间相隔n-1节点         while (p2 !

    40620

    N最大值最小值:LargeSmall

    输入 =RANDBETWEEN(1,100) 然后下拉到A1:A10 好了 我们复制→粘贴为值 以防它再次随机改变 这是我们的案例数据 在实际的应用中 我们除了求最大最小的那个值 还经常要求N...Large(数据范围,想要的N最大值) 在我们的例子中 如果要求第二最大值 公式就应该写为 为了帮你们识别 我把1最大值81 和 2最大值76 标识出来了 可以预见 第一最大值的结果和...继续作死一下 我们在2参数的位置输入其他值试试 0和负数都会报错 Small(数据范围,想要的N最小值) 其实说了Large函数之后 这个完全就是一样的啊 因为 第一最大值就是最后一最小值...最后一最大值就是第一最小值 n最小值就是倒数n最大值 n最大值就是倒数n最小值 这是一组绕口令 期末要考!...()()()() 扩展一下 这两函数加上数组将会是非常好用的函数 例如 求前3最大值的和 非常简短 而正确 以上 Q: 在上图的案例中,假设我输入 =SUM(Small(A1:A11

    54820

    LeetCode19 移除倒数N元素

    给定一链表,要求移除导数n元素,并且返回新链表的head 样例: Given linked list: 1- >2->3->4->5, and _n_ = 2....但是上手去做的话会有一点小问题,因为如果是数组很好办,我们直接可以求到数组的长度,导数N元素也非常容易确定。...我们对这个链表遍历两次,第一次求到链表的长度,这样我们就可以推算到倒数N个数是正数第几个数了。第二次我们移动对应的长度,找到需要删除的节点,将它移除即可。...我们可以先让一运动员先跑30米,然后再派另外一运动员从起点出发。这样,当第一运动员跑到终点的时候,第二运动员所在的位置就是距离终点30米的位置。...int) -> ListNode: pnt1 = head # 第一指针先跑n步 for i in range(n):

    46910
    领券