随笔分类 - 算法
大三开始学习深入学习数据结构,学习算法。
摘要:Given an array of integers, return indices of the two numbers such that they add up to a specific target. 给定一个integer类型的数组,让你返回数组中两个元素相加起来等于给定的值得元素的索引
阅读全文
摘要:递归算法的描述: 递归算法是一种直接活着间接调用自身的算法,是把问题转化为规模缩小的同类问题的子问题。与斐波那契数列异曲同工。 在历史长河之中它解决了什么: (1) 斐波那契数列: 斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、…… (2) 阶乘 :...
阅读全文
摘要:1、简单描述如果我们将文件夹伪装成打印机,那么双击打开之后的会是打印机选项,而不是真正的文件,造成这个现象的原因是:在Windows系统中,每个系统级别的应用程序都有用一个唯一标识符来进行管理,当双击某个文件时,操作系统首先检查该文件夹的文件名,并注册带表中去搜索该标识符所注册的应用程序类型,最后打开相应的程序或使用这个应用程序打开该文件,在操作系统和真实文件夹之间起到承接作用的这些数字被称为“Windows文件标识符”,英文名称为“CLSID”,他们被保存在注册表中的“HKEY_LOCAL_MACHINE\Software\Classes\CLSID”键值下,通常又32个16进制的数构成。2
阅读全文
摘要:数组有N+M个数字, 数字的范围为1 ... N, 打印重复的元素, 要求O(M + N), 不可以用额外的空间1、题目中要求我们不能使用额外的空间,那么我们能采用在原数组上做文章,这里的重点是如何对相同元素进行标记2、本文转自:http://www.cnblogs.com/end/archive/2012/02/04/2337796.html 算法思想是对数组的前N-1个元素进行标记,在标记过程中如果发现此位置已被标记,那么说明此时的元素值是重复的,于是打印出来 int[] arr = {1,4,2,1,6,7,8,3,9,4,3,1,5,7,2,9}; ...
阅读全文
摘要:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 测试{ class Program { static void Main(string[] args) { Listarr=new List(); int[]newArr=new int[100]; for (int i = 1; i <= 100; ...
阅读全文
摘要:一、定义相关1、线性表:由n个相同的类型的数据元素组成的有限的序列。 特点:(1)有且仅有一个开始结点,没有直接前趋,仅有一个后继结点。 (2)有且仅有一个终端结点,没有直接后继,仅有一个直接前驱。 分类:顺序表、单链表、双链表、循环链表 操作:interface IlinarList { void InsertNode(T a,int i);//插入操作 void DeleteNode(int i);//删除操作 T SearchNode(int i);//查找表元素 T SearchNode(T value);//定位表...
阅读全文
摘要:思想:1、对输入的两个比较字符串先构建两个字符串数组,然后根据这两个数组构建一个二维数组 2、循环比较各个最小子串,如果A中某个子串与B中某个子串值一致,就执行positionArr[i,j]=1+position[i-1,j-1]操作,此处需注意边界问题 3、标记好二维数组之后,寻找该数组中的...
阅读全文
摘要:随笔结构:一、初识二、代码实现三、研究分析一、初识“如果一对兔子每月能生1对小兔子,而每对小兔在它出生后的第3个月裏,又能开始生1对小兔子,假定在不发生死亡的情况下,由1对初生的兔子开始,1年后能繁殖成多少对兔子?”斐波拉契把推算得到的头几个数摆成一串:1,1,2,3,5,8……这串数里隐含着一个规律:从第3个数起,后面的每个数都是它前面那两个数的和。而根据这个规律,只要作一些简单的加法,就能推算出以后各个月兔子的数目了。于是,按照这个规律推算出来的数,构成了数学史上一个有名的数列。大家都叫它“斐波拉契数列”,又称“兔子数列”。这个数列有许多奇特的的性质,例如,从第3个数起,每个数与它后面那个
阅读全文
摘要:思路:先初始化含有100个元素的数组,并且将数组中的每个元素的值都设置为1。操作的元素会从索引2开始依次检查后续的数组索引,先要查看索引对应的元素值是0还是1,如果值是1就接着查看该索引是否是2的倍数,如果索引是2的倍数,就将索引上的值设为0,检查完所有的数组索引后,会接着移动到索引3,重复相同的操作,如此一直反复下去。using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 素数问题求解{ class CArry { private int[...
阅读全文
摘要:一、大致学习堆棧是一种面向表的数据结构,堆棧中的数据只能在标的某一短进行添加和删除操作,是一种典型的(LIFO)数据结构。现实生活中的理解:自助餐厅的盘子堆,人们总是从顶部取走盘子,当洗碗工把洗好的盘子放回盘子堆的时候也是放在盘子堆的顶部。Stack类实现堆棧:Stack number=new Stack();Stack类是ICollection接口的一个实现(foreach),它代表了一个LIFO群集或一个堆棧,在.NET中作为循环缓冲来实现的,这使得能动态地分配进栈数据项的空间;Stack构造器方法,默认的构造器实例化的是一个具有10个数值初始容量的空栈,每当棧达到满容量时就会把容量值翻倍
阅读全文
摘要:加密是指通过某种特殊的方法,更改已有信息的内容,是的未授权的用户即使得到了加密的信息,如果没有正确的解密算法,那么也无法得到信息的内容。方法一: //须添加对System.Web的引用 using System.Web.Security; ... /// /// SHA1加密字符串 /// /// 源字符串 /// 加密后的字符串 public string SHA1(string source) { return FormsAuthentication.HashPasswor...
阅读全文
摘要:思想:首先初始化一个和给定数组(arr)一样大小的数组(newArr),然后将arr中不为0的元素依次放在newArr中。这时我们可以考虑,如果是说将数组中的*放在数组的左边或者右边我们只需要将数组初始化全为*,然后将arr中不为*的元素一次放在newArr的左边或者右边。namespace 测试{ class Program { static void Main(string[] args) { int[] arr = {2,3,0,1,0,4,4,0,8,3,5}; int[] newArr=new int...
阅读全文
摘要:1.求质数中出现的问题 并非所有的代码路径都有返回值 public static bool ZhiShu(int number) { for(int i=2;i<number;i++){ if(number % i == 0){ return false; } else{ return true; } } }错误原因:程序会认为如果有条件不满足程序的话就没有返回值。比如说i=2的时候。修改代码如下:public static bool ZhiShu(int number) { for(int i...
阅读全文