标签:算法
斐波那契数列 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)如果根结点的值大于