1.引言 偶数奇数是数学当中常见的数,在数列当中是很常见的,一般题目会要求计算前奇数项和,前偶数项和。因为要讨论项数的奇偶性,而比较麻烦。这里我想写一个函数来解决这个问题。...2.问题 写一个函数各求前n奇数项和,前偶数项和。 3.方法 设置一个n来代表示项数,用n%2==0来判断n是不是偶数,可以用if else 语句来完成这个问题。...1/i print(sum) else: for k in range(1,x+1,2): sum2=sum2+1/k print(sum2) f(4) 4.结语 本题探讨了前奇数...,偶数项和问题。...通过这个问题,我学到了判断奇偶数的方法,在实验的操作当中还是要注意格式的问题,每一步及相应的含义是什么。
【题目描述】 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。...求按从小到大的顺序的第N个丑数。 【思路】 首先想到的是肯定是暴力法,从1,2,3,…循环一直找到给定的第n个丑数,但是这种做法我记得在LeetCode是TLE的。...以下思路来自《剑指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的上一个丑数指针,下一个丑数则是三个指针所指的数值分别乘以对应的因子中的最小值。
https://blog.csdn.net/zy010101/article/details/80079784 #include #include //求第n...个到第m个素数的和 int main() { int n,m; int flag = 0; int sum = 0; int j = 0; int isPrime_1(int n); scanf...("%d %d",&a,&b); for(int i = 2; flag 第m个素数 { j = isPrime_1(i); if (0 ==...j) { continue; } else { flag++; //素数计数器,表示是第几个素数 if(flag >= n) //从第n个素数开始求和...//是素数返回1,否则返回0 { int i = sqrt(n); int a = 1; for(int j = 2; j <= i; j++) { if(0 == n % j)
返回第 N 个神奇数字。由于答案可能非常大,返回它模 10^9 + 7 的结果。...示例 1: 输入:N = 1, A = 2, B = 3 输出:2 示例 2: 输入:N = 4, A = 2, B = 3 输出:6 示例 3: 输入:N = 5, A = 2, B = 4 输出...while(lo <= hi) { mid = lo+((hi-lo)>>1); num = ct(mid,A,B);// mid 包含多少个...神奇数字 if(num >= N) { ans = mid; hi = mid-1;...int A, int B) { return n/A + n/B - n/lcmab; } }; 4 ms 5.9 MB C++ ---- 我的CSDN博客地址 https:/
) 编写一个程序,找出第 n 个丑数。...Note: 1 is typically treated as an ugly number. n does not exceed 1690. 理解 方法1 时间复杂度:o(n3) ?..., 保证完成层次遍历 priority_queue 判断是否重复元素:() std::map :时间复杂度 log(n) std::set : 时间复杂度 log(n),不能通过下标访问 unordered_map...Coin Change 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。...flag = rchild; } } if (a[root] < a[flag]) { //交换父结点和比父结点大的最大子节点
题意 找到单链表倒数第 n 个节点,保证链表中节点的最少数量为 n 。...样例 给出链表 3->2->1->5->null 和 n = 2,返回倒数第二个节点的值 1 思路1 一个简单的思路就是先将链表进行反转,然后在反转后的链表中,顺着找第 n 个元素即可。...例如对于 100 个元素的链表,查找倒数第 100 个,那么就等于将链表遍历了 2 次,效率很低。...改进思路: 设 2 个指针 p1, p2 先让指针 p2 指向顺数第 n 个元素,p1 指向原链表的头指针。...然后 p1 和 p2 一起向后移动,直到 p2 指向 NULL,此时 p1 就会指向倒数第 n 个元素上。 代码实现2 /** * Definition for ListNode.
只包含2、3、5中的1个或多个因子的数称为丑数,要求按从小到大的顺序找到第n个丑数 ''' 2, 3, 5 6: 是丑数 14: 不是丑数,包含7 下一个丑数必定是数组的某一个丑数A * 2、B *
原题 一个正整数如果能被 a 或 b 整除,那么它是神奇的。 给定三个整数 n , a , b ,返回第 n 个神奇的数字。因为答案可能很大,所以返回答案 对 10^9 + 7 取模 后的值。...n <= 10^9 2 <= a, b <= 4 * 10^4 难度Hard 标签数学 二分查找 分析 看完题目我感觉一个线性遍历就能出来了,可是忘记了今天这是一道困难题。...于是乎我的第一个解法横空出世,默认的testCase也通过了。...超时了 哈哈哈 于是开始重新分析题目,发现规律: 一个数里包含的神奇数字(x)的数量= x/a + x/b - x/最小公倍数 代码实现 func nthMagicalNumber(n int,...minGongBeiShu(a, b) maxVal := 1000000000 + 7 cnt := 0 for start <= end { // 找到中间的数,计算出这个数 有几个神奇数字
1 #include 2 #include 3 using namespace std; 4 5 int nth_prime(int n) { 6...vector primes(n); 7 primes[0] = 2; 8 int CntOfPrime = 1; 9 for (int i = 3; CntOfPrime n; ++i) { 10 bool isPrime = true; 11 for (int j = 0; j < CntOfPrime && primes[j]*primes[j] <...isPrime) { 18 ++CntOfPrime; 19 primes[CntOfPrime - 1] = i; 20 } 21 } 22 return primes[n...- 1]; 23 } 24 25 int main() { 26 int n; 27 while (cin >> n) { 28 cout n) << endl
删除链表的倒数第N个节点 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2....当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗?...---- 解法一 先遍历一遍计算链表长度;再遍历一遍删除倒数第n个节点 ? 解法二:进阶 只遍历一遍链表,能否解决这个问题?...Palindrome Linked List 请判断一个链表是否为回文链表。...示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?
1.递归方法实现 #define _CRT_SECURE_NO_WARNINGS #include #include int Fib(int n){ if(n...==1){ return 1;} if(n==2){ return 1;} return Fib(n-1)+Fib(n-2); } int main(){ int n; int a; printf...("请输入需要打印的斐波那契数\n"); scanf("%d",&n); a=Fib(n); system("pause"); return 0; } 2.非递归方法实现 #define _CRT_SECURE_NO_WARNINGS...#include #include int Fib(int n){ if(n==1){ return 1; } if(n==2){ return 1...printf("请输入需要打印的斐波那契数"); scanf("%d",&n); a=Fib(n); system("pause"); return 0; }
,find the nth num. 1 1 2 3 5 8... 2 #include 3 using namespace std; 4 5 int fib(int n)...{ 6 if(n==1 || n==2){ 7 return 1; 8 } 9 int prev=1; 10 int result=1; 11 n-=2; 12...while(n--){ 13 result+=prev; 14 prev=result-prev; 15 } 16 return result; 17 } 18 int main...(){ 19 int n; 20 while(cin>>n){ 21 coutn)<<endl; 22 } 23 24 return 0; 25 }
题意 给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。 样例 给出链表 1->2->3->4->5->null 和 n = 2....删除倒数第二个节点之后,这个链表将变成 1->2->3->5->null. 思路 类似于 链表倒数第n个节点,先找到被删除节点的前节点,然后将前节点的 next 指向被删除节点的的 next 即可。...* @param n: An integer....preDelete.next = preDelete.next.next; return dummy.next; } } 原题地址 LintCode:删除链表中倒数第n...个节点
题目: 思路: 由于这是一个链表,所以我们一般只能获取到一个头结点,然而其他信息我们不确定。所以可以采用双指针的方法。...思路二,利用一个指针先走出目标数目,然后两个指针一起走,那么先走的指针走完时,第二个指针恰好会停在目标元素上。...OutPutLinkedList(result); } /** * 方案2,用双指针,一个先走一定的步数,然后一起走,某一个先抵达就停止 * * @param...n; i++) { p2 = p2.next; } //当指针p2走完n步以后,让指针p2和p1同时向前走,直到p2走到最后一个节点,即p2->...next=NULL // 整个过程p2和p1之间相隔n-1个节点 while (p2 !
---- 起源 2020年是一个灾年。从上帝视角(精神与物质能量守恒定律)来看,当给关上一扇窗户的时候,那必然会打开新的一扇窗户。 那么当上帝给你关掉很多扇窗户的时候,你可以尝试砸开一堵墙 。...由于只有周末才有时间进行添砖加瓦,所以第一个目标是完成核心三大板块:会员、商品、订单。 ---- 小结 作为程序员,开源项目是必须要了解、参与进去的。(免费的东西,它不香吗?)
2025-01-13:找出 K 秒后拿着球的孩子。用go语言,给定两个正整数 n 和 k,有 n 个编号从 0 到 n - 1 的孩子排成一队。 最开始,编号为 0 的孩子手中有一个球,并向右传递。...每秒,持球的孩子会将球传给旁边的孩子。 当球到达队列的任一端(即编号为 0 或 n - 1 的孩子)时,传球方向会反转。 请返回 k 秒后接到球的孩子的编号。 提示: 2 n <= 50。...大体步骤如下: 1.初始化孩子队列,编号为0到n-1。 2.设立一个变量t,用来记录球传递的位置。 3.计算每秒传递一次球后的位置: • 计算当前传球的位置t,取余数操作k % (n - 1)。...• 如果经过k/(n-1)轮传球之后发现传球方向需反转,条件是(k/(n-1)) % 2 > 0,那么返回队列的倒数第二个位置n - t - 1,因为最后一个位置是编号为n-1的孩子,其实到该孩子手中的时候...总的时间复杂度为O(1),因为无论n和k的取值如何,算法的执行时间不会随着n和k的增加而增加。 总的额外空间复杂度为O(1),因为除了几个变量外,没有使用额外的数据结构存储数据。
给定一个链表,要求移除导数第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):
删除链表的倒数第 N 个结点 - 力扣(LeetCode) 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。...示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: 输入:head = [1], n = 1 输出:[] 示例 3: 输入:head...int) -> ListNode: # 在最前添加一个节点,用于接 head dummy = ListNode(0, head) # 快指针: right...先让 right 快指针 走 n 步 for i in range(n): right = right.next # 2....= None: right = right.next left = left.next # 跳过中间的节点(即删除倒数第n个节点)
输入 =RANDBETWEEN(1,100) 然后下拉到A1:A10 好了 我们复制→粘贴为值 以防它再次随机改变 这是我们的案例数据 在实际的应用中 我们除了求最大最小的那个值 还经常要求第N...个,例如第2个,第3个最大最小值 例如 我们知道了第一名分数是99 我们想知道第二名分数是多少 以知道他们的差距有多大 我们用Large和Small来求最大值和最小值 这是一对相反数 成对记起来更容易...Large(数据范围,想要的第N个最大值) 在我们的例子中 如果要求第二个最大值 公式就应该写为 为了帮你们识别 我把第1个最大值81 和 第2个最大值76 标识出来了 可以预见 第一个最大值的结果和...继续作死一下 我们在第2个参数的位置输入其他值试试 0和负数都会报错 Small(数据范围,想要的第N个最小值) 其实说了Large函数之后 这个完全就是一样的啊 因为 第一个最大值就是最后一个最小值...最后一个最大值就是第一个最小值 第n个最小值就是倒数第n个最大值 第n个最大值就是倒数第n个最小值 这是一组绕口令 期末要考!
做动态规划类题目一般会定义一个dp表。这个dp表一般为一维数组或者二维数组。然后把这个表给填满,其中的一个值就有可能是我们想要的结果。...状态表示就是dp表中的某一个值所表示的含义 状态表示是怎么来的呢?得到状态表示的途径无非有以下几种:①题目要求。②经验+题目要求。...题目中说:存在第0个数,那么第N个数就和dp数组中N下标的元素相对应。 所以本题的状态表示为:dp[i]表示第i个泰波那锲数 第二步:状态转移方程 dp[i]等于什么?这就是状态转移方程。...填写n位置时,必须保证n-1,n-2,n-3位置的数据已经获得。所以我们要从左向右进行填表。 -第五步: 返回值 题目要求什么我们就返回什么。一般都是返回dp【n】。...代码实现 class Solution { public: int tribonacci(int n) { if(n==0) return 0; if(n==1|
领取专属 10元无门槛券
手把手带您无忧上云