4个倒数的和等于2021的倒数是多少
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4个倒数的和等于2021的倒数是多少相关的知识,希望对你有一定的参考价值。
参考技术A分子为1的分数又称为“埃及分数”。
埃及分数拆分为若干个埃及分数,一直是一个数学难题,没有直接的数学推导方法。通常只能靠编程搜索枚举。而枚举计算程序的运行效率不高,对于本题而言,至少有数千万组不同的解。
要找到所有的解,既耗时,也没有必要。因此,优化了枚举算法,跳过了其中99.99%以上的无效搜索,只求得到极少部分的答案。
写了一段fortran代码,将分母范围限定在10之内,并且搜寻到一组解之后,跳过一定的范围搜索下一个。结果在23秒内,获得162组解。
附:162组解和fortran代码
链表问题----删除倒数第K个节点
在单链表和双链表中删除倒数第K个节点
分别实现两个函数,一个可以删除单链表中的倒数第K个节点,一个可以删除双链表中的倒数第k 个节点,要求时间复杂度是 O(N),空间复杂度是 O(1)。
【解析】
基本思路:
让链表从头开始走到尾,每移动一步,就让k值减一,当k 值走到结尾时,
如果k 值大于0,说明链表根本没有倒数第k 个节点
如果等于0,那么头节点就是倒数第k 个节点,此时应该返回 head.next
如果小于0,则重新从头节点开始,每移动一步,k 值增加一,当k 等于0时,移动停止,移动到的节点就是要删除节点的上一个节点
package com.test; import com.test.ListNode; import com.test.ListNodeDouble; /** * Created by Demrystv. */ public class DelLastKNode { //删除单链表中的倒数第K 个节点 public ListNode removeLastKthNodeInSingle(ListNode head, int lastKth){ if (head == null || lastKth < 1){ return null; } ListNode cur = head; while (cur != null){ lastKth--; cur = cur.next; } if (lastKth == 0){ head = head.next; } // 可以举例子:1 2 3 4 5 的倒数第4个节点 if (lastKth < 0){ cur = head; while (++lastKth != 0){ cur = cur.next; } cur.next = cur.next.next; } return head; } // 删除双链表的倒数第K 个节点,原理与上面删除倒数第K个 节点的原理类似,主要是注意指针的连接 public ListNodeDouble removeLastKthNodeInDouble(ListNodeDouble head, int lastKth){ if (head == null || lastKth < 1){ return null; } ListNodeDouble cur = head; while (cur != null){ lastKth--; cur = cur.next; } if (lastKth == 0){ head = head.next; head.last = null; } if (lastKth < 0){ cur = head; while (++lastKth != 0){ cur = cur.next; } ListNodeDouble newNext = cur.next.next; cur.next = newNext; if (newNext != null){ newNext.last = cur; } } return head; } }
以上是关于4个倒数的和等于2021的倒数是多少的主要内容,如果未能解决你的问题,请参考以下文章