重学算法
文章平均质量分 54
重刷力扣算法题!
Java、C语言、数据结构、算法题
Cou流氓也要有文化
这个作者很懒,什么都没留下…
展开
-
如何用Java构造链表
int val;val = x;} // 递归打印链表 public void print() {= null) {} } }1. 单链表节点定义int val;val = x;} // 递归方式添加结点(尾插) public void add(int x) {} else {} } // 递归打印链表 public void print() {= null) {} } }2. 创建一个单链表/*1.一个个添加节点 */ int [ ] input = {原创 2023-04-01 11:35:26 · 324 阅读 · 0 评论 -
25. K 个一组翻转链表(Java实现)
力扣:25.K个一组翻转链表(困难)参考:labuladong题目:答案:/** * 反转区间 [a, b) 的元素,注意是左闭右开 */ ListNode reverse(ListNode a, ListNode b) { ListNode pre, cur, nxt; pre = null; cur = a; nxt = a; while (cur != b) {原创 2021-03-21 21:15:12 · 233 阅读 · 0 评论 -
92. 反转链表 II(Java实现)
力扣:92.反转链表II(中等)参考:labuladong 题目:反转单链表的一部分,就是给你一个索引区间,让你把单链表中这部分元素反转,其他部分不变:答案:ListNode reverseBetween(ListNode head, int m, int n) { // base case 如果 m == 1,就相当于反转链表开头的 n 个元素 if (m == 1) { return reverseN(head, n); } //原创 2021-03-21 18:01:05 · 343 阅读 · 0 评论 -
Java创建链表(测算法题用)
拿到链表操作的函数,正准备自己测试一下,突然发现竟然不知道要如何将数组输入变成链表,很尴尬,这篇记录如何创建样例链表。(附赠尾插法创建链表)class ListNode { int val; ListNode next; ListNode(int x) { val = x; } // 递归方式添加结点 public void add(int x){ ListNode node = new ListNode(x);原创 2021-03-21 15:50:06 · 222 阅读 · 0 评论 -
算法专题:动态规划
动态规划 算法案例509.斐波那契数(简单)322.零钱兑换(中等) 动态规划问题(Dynamic Programming,简称 DP)首先,动态规划问题的一般形式就是求最值。比如说让你求最长递增子序列呀,最小编辑距离呀等等。既然是要求最值,核心问题是什么呢?求解动态规划的核心问题是穷举。因为要求最值,肯定要把所有可行的答案穷举出来,然后在其中找最值呗。首先,动态规划的穷举有点特别,因为这类问题存在「重叠子问题」,如果暴力穷举的话效率会极其低下,所以需要「备忘录」或者「原创 2020-12-28 10:46:22 · 176 阅读 · 0 评论 -
算法专题:递归
什么是递归?函数直接或间接调用自身递归的特点:自身调用:原问题可以分解为子问题,子问题和原问题的求解方法是一致的,即都是调用自身的同一个函数。终止条件:递归必须有一个终止的条件,不能无限循环地调用本身。public int sum(int n) { if (n <= 1) { // 终止条件 return 1; } return sum(n - 1) + n; // 自身调用}递归与栈的关系:其实,递归的过程,可以理解为出入栈的过原创 2020-12-27 09:07:42 · 245 阅读 · 0 评论 -
携程2020笔试题——《买饮料》
题目描述游游今年就要毕业了,和同学们在携程上定制了日本毕业旅行。愉快的一天行程结束后大家回到酒店房间,这时候同学们都很口渴,是石头剪刀布选出游游去楼下的自动贩卖机给大家买可乐。贩卖机只支持硬币支付,且收银都只支持10,5,100三种面额。一次购买行为只能出一瓶可乐,且每次购买后总是找零最小枚数的硬币。(例如投入100元,可乐30元,则找零50元一枚,10元两枚)游游需要购买的可乐数是m,其中手头拥有的 10,50,100 面额硬币枚数分别是 a,b,c ,可乐的价格是x(x是10的倍数)。如果游游优先原创 2020-10-13 15:54:21 · 930 阅读 · 1 评论 -
1171:欢乐斗牛
Description牛牛是一种纸牌游戏,总共5张牌,规则如下:如果找不到3张牌的点数之和是10的倍数,则为没牛;如果其中3张牌的点数之和是10的倍数,则为有牛,剩下两张牌的点数和对10取余数,余数是几,就是牛几,特别的当余数是0的时候是牛牛;例如: 1 2 3 4 5, 1 + 4 + 5 = 0 (mod 10),2 + 3 = 5(mod 10), 为牛5。Inpu...原创 2020-04-03 20:12:15 · 1126 阅读 · 0 评论 -
1051: 电报加密
Description输入一行电报文字,将小写字母变成其下一字母(如’a’变成’b’……’z’变成’a’其它字符不变)。Input一行字符Output加密处理后的字符Sample Input a bSample Outputb cNote:重点在于判断EOF这里,掉了的话输出可能超限,OJ不予通过#include <std...原创 2019-04-18 08:02:49 · 1894 阅读 · 0 评论 -
1006: A+B 结束标志 scanf("%d", &n) == EOF (VI)
DescriptionYour task is to calculate the sum of some integers.InputInput contains multiple test cases, and one case one line. Each case starts with an integer N, and then N integers follow in th...原创 2019-04-04 10:10:00 · 205 阅读 · 0 评论 -
1000: A + B Problem 两数求和
WUST Online JudgeDescription计算 A + B.Input多组测试数据,每组测试数据占一行,包括2个整数。Output在一行中输出结果。Sample Input1 12 23 3Sample Output246#include <stdio.h>int main(){ int a, b...原创 2019-04-04 09:48:00 · 575 阅读 · 0 评论 -
1061: 链表合并
Description已有a、b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列。Input第一行,a、b两个链表元素的数量N、M,用空格隔开。 接下来N行是a的数据 然后M行是b的数据 每行数据由学号和成绩两部分组成Output按照学号升序排列的数据Sample Input 2 35 1006 893 824 952 1...原创 2019-04-23 17:05:10 · 211 阅读 · 0 评论 -
1053: 字符串排序(指针)
Description输入三个字符串,按由小到大的顺序输出,字符串长度小于1000Input3行字符串Output按照从小到大输出成3行Sample InputcdeafgabcSample OutputabcafgcdeNote:main 函数先 scanf 再赋值给指针的原因:C语言是比较低级的语言,没有字符串概念,只有字...原创 2019-04-20 16:50:24 · 830 阅读 · 0 评论 -
1072: 花生采摘
Description鲁宾逊先生有一只宠物猴,名叫多多。这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!——熊字”。鲁宾逊先生和多多都很开心,因为花生正是他们的最爱。在告示牌背后,路边真的有一块花生田,花生植株整齐地排列成矩形网格(如图1)。有经验的多多一眼就能看出,每棵花生植株下的花生有多少。为了训练多多的算术,鲁宾逊先生说:“你先找...原创 2019-04-25 14:42:27 · 549 阅读 · 0 评论 -
1056: 约瑟夫问题【n人围成一圈,报数为3的人退出圈子,问最后留下的人原来的编号。】
Description有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。Input初始人数nOutput最后一人的初始编号Sample Input 3Sample Output2Note:这题 “报数为3的人退出”,这个条件可以改为 “报数为k的人退出”,输入 n, k,...原创 2019-04-22 09:26:55 · 3849 阅读 · 3 评论 -
1055: 数组连续移位(指针)
Description有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,见图。写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数。Input输入数据的个数n n个整数移动的位置m。n,m<1000Output移动后的n个数,每个数后面输出一个空格Sample Input101 2 3 4 5 6 7 8 9 102...原创 2019-04-21 10:06:37 · 588 阅读 · 0 评论 -
1019: 计算奖金
Description企业发放的奖金根据利润提成。利润低于或等于100000元的,奖金可提10%;利润高于100000元,低于200000元(100000<I≤200000)时,低于100000元的部分按10%提成,高于100000元的部分,可提成 7.5%;200000<I≤400000时,低于200000元部分仍按上述办法提成,(下同),高于200000元的部分按5%提成;...原创 2019-04-04 11:13:59 · 313 阅读 · 0 评论 -
1020: 求两整数的最大公约数和最小公倍数
Description输入两个正整数m和n,求其最大公约数和最小公倍数。Input两个整数Output最大公约数,最小公倍数Sample Input5 7Sample Output1 35版本1:常规for#include <stdio.h>#include <stdlib.h>//greatest com...原创 2019-04-04 11:57:17 · 301 阅读 · 0 评论 -
1028:自由下落的球
Description一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。它在第N次落地时反弹多高?共经过多少米?保留两位小数InputM NOutput它在第N次落地时反弹多高?共经过多少米?保留两位小数,空格隔开,放在一行Sample Input 1000 5Sample Output31.25 2875.00Note:这题提供两...原创 2019-04-10 11:26:08 · 358 阅读 · 0 评论 -
1029: 猴子吃桃问题
Description猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第N天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。InputNOutput桃子总数Sample Input10Sample Output1534...原创 2019-04-11 09:48:37 · 229 阅读 · 0 评论 -
1037: 求一元二次方程的根(带虚根)
Description求一元二次方程 ax2+bx+c=0 的根,用三个函数分别求当b^2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。Input一元二次方程的系数a, b, c (|a|, |b|, |c| < 105)Outputx1=? x2=?(保留3位小数)Sample Input 4 1 1Sample Out...原创 2019-04-12 10:06:14 · 10964 阅读 · 1 评论 -
1040: 字符串首尾颠倒函数
Description写一函数,使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串。Input一行字符串(不含空格,长度小于等于100)Output逆序后的字符串Sample Input 123456abcdefSample Outputfedcba654321Note:字符串逆置,也是很经典的题型。原题很简单,字符串逆置即...原创 2019-04-12 11:38:35 · 1421 阅读 · 0 评论 -
1021: 统计英文字母、数字、空格和其他字符的个数
Description输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。Input一行字符Output统计值Sample Input aklsjflj123 sadf918u324 asdf91u32oasdf/.';123Sample Output23 16 2 4#include <stdio.h>#inc...原创 2019-04-09 10:26:05 · 342 阅读 · 0 评论 -
1022: 计算2+22+222+…
Description求Sn=2+22+222+…+22…222(有n个2)的值。 例如:2+22+222+2222+22222(n=5),n由键盘输入。InputnOutput和Sample Input5Sample Output24690Note:这类题需要定义两个变量,一个用来保存单项值,一个用来保存和的值。#include &l...原创 2019-04-09 11:21:55 · 5187 阅读 · 0 评论 -
1024: 按公式求和
Description求以下三数的和,保留2位小数 1~a之和 1~b的平方和 1~c的倒数和Inputa b cOutput1+2+...+a + 1^2+2^2+...+b^2 + 1/1+1/2+...+1/cSample Input 100 50 10Sample Output47977.93Note:sum += (double)1/...原创 2019-04-09 11:51:43 · 356 阅读 · 0 评论 -
1025: 水仙花数
说实话,水仙花这个东西已经是烂大街了,自从我们第一次学习C语言就会碰到,但即便如此,重要还是重要,以后还会碰到无数次。而我本人虽然也碰到过很多次,但很有意思每次题目都会提供给我新的实现方案。常规思想是分别拿到个十百位,然后立方求和,这里提供另外3个版本。需要全部掌握,虽然都是求水仙花,但出题人一旦限制了编写代码的条件,一种解法就显得力不从心了。Note:这里的立方没有使用 pow,因...原创 2019-04-09 12:37:51 · 189 阅读 · 0 评论 -
1054: 数组重新整理,最小元素与第一个对换,把最大元素与最后一个数对换。拓展:双向排序
Description输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。Input10个整数Output整理后的十个数,每个数后跟一个空格(注意最后一个数后也有空格)Sample Input2 1 3 4 5 6 7 8 10 9Sample Output1 2 3 4...原创 2019-04-21 09:48:48 · 489 阅读 · 0 评论