斐波那契数列
Fibonacci数列问题描述Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。 输入格式 输入包含一个整数n。 输出格式 输出一行,包含一个整数,表示Fn除以10007的余数
java中没有将指针暴露给用户(以前做过看过一篇文章写有java中是有指针的,只是被藏起来了),所以得使用引用的方式。
何为引用请看下面这篇文章(写的很不错,当然肯定比我写的好):
https://www.cnblogs.com/huajiezh/p/5835618.html
链表中内部类和嵌套类的
题目描述
给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
说明:你不能倾斜容器,且 n 的值至少
第二课主要介绍第一课余下的BFPRT算法和第二课部分内容
1、BFPRT算法详解与应用
找到第K小或者第K大的数。
普通做法:先通过堆排序然后取,是n*logn的代价。
// O(N*logK)
public static int[] getMinKNumsByHeap(int
本文将介绍3区基数快速排序、后缀排序法。
1. 前文回顾
在字符串算法—字符串排序(上篇)中,我们介绍了键索引计数法、LSD基数排序、MSD基数排序。
但LSD基数排序要求需排序字符串的长度一致;MSD基数排序虽然对字符串的长度没要求,但其递归循环里的每次循环都需要进行很多操作,且
这是悦乐书的第249次更新,第262篇原创
01 看题和准备
今天介绍的是LeetCode算法题中Easy级别的第116题(顺位题号是507)。我们定义Perfect Number是一个正整数,它等于除了它自己之外的所有正除数之和。现在,给定一个整数n,编写一个函数,当它是一个完美数字时返回true
本文将介绍键索引计数法、LSD基数排序、MSD基数排序。
1. 字符串(String)
我们来简单回顾一下字符串。
众所周知,字符串是编程语言中表示文本的数据类型。它是一堆字符的组合,如 String S="String"。
我们可以知道字符串的长度:S.length()=6;
1.快速排序缺陷
快速排序面对重复的元素时的处理方法是,把它放在了左部分数组或右部分数组,下次进行分区时,还需检测它。如果需要排序的数组含有大量重复元素,则这个问题会造成性能浪费。
解决方法:新增一个相同区域,并把重复元素放进去,下次进行分区时,不对相同区域进行分区。
2. 3区快速排序(3
1.排序问题
现有一个含有N个数字的数组S,如何通过程序把这个数组变成有序的数组?
例如:
排序前:S:5,3,7,5,9,4,1,100,50
排序后:S:1,3,4,5,5,7,9,50,100
2.归并排序(merge sort)
不同于希尔排序,这里将介绍归并排序。
1.排序问题
现有一个含有N个数字的数组S,如何通过程序把这个数组变成有序的数组?
例如:
排序前:S:5,3,7,5,9,4,1,100,50
排序后:S:1,3,4,5,5,7,9,50,100
2.快速排序(Quicksort)
简单介绍:
快速排序内含一道重要的工
1.排序问题
现有一个含有N个数字的数组S,如何通过程序把这个数组变成有序的数组?
例如:
排序前:S:5,3,7,5,9,4,1,100,50
排序后:S:1,3,4,5,5,7,9,50,100
2.二叉堆(binary heaps)
进行堆排序前,需要先把数组排成二叉堆,故
闰年判断
问题描述
给定一个年份,判断这一年是不是闰年。
当以下情况之一满足时,这一年是闰年:
1. 年份是4的倍数而不是100的倍数;
2. 年份是400的倍数。
其他的年份都不是闰年。
输入格式
输入包含一个整数y,表示当前的年份。
输出格式
输出一行,如果给定的年份是闰年,则输出yes,否
主要是这两本书的代码的分析和思路总结。
Ch4 入门篇(2)——算法初步
4.1 排序
4.2 散列
A1084 Broken Keyboard
A1092 To Buy or Not to Buy
A1041 Be Uni
之前讨论数据结构和算法的本质时说,计算机中数据结构存储仅两种方案,一种是连续存储的数组,一种是非连续存储的链表。
算法对数据结构是强依赖,不同的数据结构产生不同的算法。
后续的非线性的数据结构树、图,都是基于数组和链表的扩展而得,它们是一种逻辑结构而非存储结构。
而它们之所以产生,是因为单纯的使用数
这是悦乐书的第250次更新,第263篇原创
01 看题和准备
今天介绍的是LeetCode算法题中Easy级别的第117题(顺位题号是509)。Fibonacci数字,通常表示为F(n),形成一个称为Fibonacci序列的序列,这样每个数字是前两个数字的总和,从0和1开始。即,F(0)= 0,F(
输入:只能输入A-Z(不区分大小写),0-9和下划线;
第一行输入应输入字符串,第二行输入实际输入字符串。
输出:按大写输出缺少的字符,每个字符输出一次。
注意:
1、由于不区分大小写,则需要将小写字母识别为大写字母;
2、保证每个字符只出现一次。
思路:
1、将所有的字母都转化
可输入内容为0-9,a-z,A-Z。
输入:
第一行输入任意字符串;
第二行输入期望字符串。
输出:
如果第一行包含了所有期望字符串,输出yes和多余字符个数;
如果第一行不能完全包含期望字符串,输出缺失的字符个数。
思路:
输入n个数,找出第一个只出现一次的数,输出它。
如果没有,输出none。
思路:
将输入的数值作为HashTable的数组下标即可。
1 #include<cstdio>
2 int a[1000001], hashTable[10001]={0};
3 int
输入两个字符串,将第一个字符串中包含的第二个字符串的字符去掉(包括空格),然后输出。
gets()不能用了,我混搭了string和length(),不用纠结长度还是很好的。
第二个字符串所在HashTable数组对应位置如果不等于0,则清零。输出非零位置对应ch1的字符。
书上的代码更简洁一些,但是
LCA最小公共父节点解法:
1、二叉搜索树:
中序遍历是升序,前序遍历即按序插入建树的序列。
二叉搜索树建树最好用前序+中序,如果用前序建树,最坏情况会退化为线性表,超时。
最近公共祖先甲级: A1143,1151
利用二叉搜索树的性质寻找结点u和v的最低公共祖先(递归解法)
1)如果根结点的值大于