随笔分类 - 算法
摘要:双指针指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的指针进行扫描,从而达到相应的目的。最常见的双指针算法有两种:一种是,在一个序列里边,用两个指针维护一段区间;另一种是,在两个序列里边,一个指针指向其中一个序列,另外一个指针指向另
阅读全文
摘要:思想步骤: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 给一个数组: i
阅读全文
摘要:时间复杂度和空间复杂度说: 选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) (因为双循环的原因) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。 算法思想步骤: 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。 再从
阅读全文
摘要:所谓递归可以说成函数调函数如我们 returneat3(n - 1) * 2 + 2 (大圣吃桃子)下面上图看递归原理:递归牵连到两个概念 压栈和出栈看完图相信大家应该懂了是怎么回事(这么压栈内存可不少哦)下面上吃桃子的代码: class Program { static vo...
阅读全文
摘要:什么是回文:就是正着读和逆着读都一样,如:abcba上一个图加深认识判断是一个字符串是否是回文直接上题了using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Thr...
阅读全文
摘要:题目:用1、2、3、4、5、6、7、8、9九个数字拼成一个九位数(每个数字恰好用一次),使得它的前三位、中间三位、最后三位的比值是1 : 2 : 3。例如192384576就是一个合法的解,因为192 : 384 : 576 = 1 : 2 : 3看到这种要求一般会想到 这种逻辑 var m1 = x * 100 + y * 10 + z; //前三位数 var m2 = m1 * 2; var m3 = m1 * 3;而每个数都是从1-9之间取 所以会产生各种排序组合for(int x=1;x= 1...
阅读全文