随笔分类 - 修炼
摘要:冒泡排序 两数相比,大数放后 时间复杂度为O(n²) BubbleSort.cs public class BubbleSort { public static void bubbleSort(ref int[] a) { int m=a.Length; for(int i=0;i<m;i++) {
阅读全文
摘要:给你一个二维数组,再给你一个值,二维数组里得值低于这个数时,会变抹平,最后返回一个值 点击查看代码 public static int Blue(int[][] m,int level) { if(m==null) return 0; int count=0; int h=m.Length; int
阅读全文
摘要:给你一个只有0与1的矩阵,当你释放一个炸弹进这个矩阵时候,若旁边有1则连锁Bomb,将1置换成0 点击查看代码 public class Boom { public static int BigBoom(int[][] m,int row,int col) { if(m==null) return
阅读全文
摘要:给你一个矩阵,让你算出它的四邻八方,方法一很简单,判断有没超出索引就是了,方法二用第二个矩阵来记录方向,让矩阵第一个数等于要移动的方向 方法一 public class Neighbors { public static void Acees(int[][] m) { if(m==null) ret
阅读全文
摘要:打印字符串所对应的字符所有排列组合 将数字与对应的字符数组写进字典里,这里使用广度优先遍历BFS,那就得用队列,之后用个列表去接这些组合,list是动态的,不会被限制长度,队列储存string类型 大威天龙 public class PhoneNumber { //大威天龙 public stati
阅读全文
摘要:顺时针与逆时针打印矩阵 首先要搞明白,我们前四次操作分别做了上面,又会带来什么后果 顺时针 第一步操作,当我们把第一排数据吃掉时,我们的行的索引就会增加一行,因为我们已经不会再回到第一行了,且高度也会减少一行。 第二步操作,我们会把最后一列除开第一行第一行最后一个列吃掉,此时我们的宽度就会减少一列,
阅读全文
摘要:对于2个字符,能罗列出多少种组合 先是女士的先入座,先递归FFF的,再递归FF的,最后递归F的,同理男生先入座,先递归MMM,再MM,再M的 Program.cs class Test { static void Main(string[] arg) { var flower=new Flower(
阅读全文
摘要:基于二叉查找树的优化,优化了什么,当二叉查找树遇到有序数组时,性能损失大,会退化成一条链表,且树高度最高,所以引入红黑树进行优化,通过对树的不断左旋,右旋,颜色翻转,来使树得到平衡 RedTree.cs class RedTree<T> where T:IComparable<T> { privat
阅读全文
摘要:给你一个二叉树,你能克隆出无限的二叉树,很显然是不能用递归来做的,调用函数它是占用我们的栈的,要是树的高度很高,没克隆几个就Stack Overflow了,所以要用广度优先来做,就得引入队列 Program.cs class Test { static void Main(string[] arg)
阅读全文
摘要:什么是二叉树 当我们得到一个数,就将这个数放在第一位,拿到第二个数时,对比第一个数,小则放在左边(左孩子Left),大则放在右边(Right),接下来依次类推。 深度优先遍历DFS:(栈)递归方法 前序遍历(Pre—Order)(根左右) 中序遍历(In-Order)(左根右)会让树按顺序排列 后序
阅读全文
摘要:题目为,给你一个数组,计算这个数组里面的值相加为520的次数,配对过一次的不能再使用 字典方法 class Test { static void Main(string[] arg) { int[] a=new int[]{20,260,20,260,500,500}; System.Console
阅读全文
摘要:Zip two Lists 将两个链表链接到一起,考验我们对引入类型的属性程度 不能使用List,而是自己定义类来存储数据 点击查看代码 class Test { static void Main(string[] arg) { var list1=MakeList(1,3,5,7,8); var
阅读全文
摘要:一、二维数组排列 点击查看代码 // int[,] a=new int[5,4]{{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}}; //按行进行排列 // for(int row=0;row<5;row++) // { // for(int co
阅读全文
摘要:内容:打印九九乘法表 1、首先需要2个可自加的数,需要for循环嵌套一个for循环,一个用来表示被乘数,一个表示乘数。 2、每一行不超过被乘数的值 点击查看代码 class Program { static void Main(string[] args) { for(int i=1;i<=9;i+
阅读全文
摘要:汉诺塔(Honoi)递归问题 汉诺塔实质就是解决n-1层的问题,类似于栈的先进后出。 先不要考虑很复杂的情况 当我们只有一个盘子的时候,这时候只需要一次A->C就足够了 点击查看代码 if(n==1) { Console.WriteLine(a+"移动到"+c); count++; } 当我们只有2
阅读全文

浙公网安备 33010602011771号