![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
菜鸟程序员李老板专业码代码三十年
菜鸟推动世界进步
展开
-
判断是否素数
判断是否是素数原创 2022-09-25 21:33:17 · 312 阅读 · 1 评论 -
生兔子斐波拉数列
生兔子原创 2022-09-25 21:31:33 · 166 阅读 · 0 评论 -
求平均值笔记
求平均值笔记仅作为笔记使用求两个无符号正数平均值1.(a+b)/22.low +(high-low)/23.(a/2)+(b/2)+(a&b&1)4.(a&b)+(a^b)/25.(a^b)+(a&b)*26.限制输入长度7.相加结果进行转换成长整型原创 2022-04-02 17:23:57 · 168 阅读 · 1 评论 -
大顶堆小顶堆笔记
大顶堆小顶堆笔记堆是一颗完全二叉树堆分为两类:1、最大堆(大顶堆):堆的每个父节点都大于其孩子节点;2、最小堆(小顶堆):堆的每个父节点都小于其孩子节点;堆的存储:一般都用数组来表示堆,i结点的父结点下标就为(i – 1) / 2。它的左右子结点下标分别为2 * i + 1和2 * i + 2,i从0开始堆排序:堆的第一个元素要么是最大值(大顶堆),要么是最小值(小顶堆),这样在排序的时候(假设共n个节点),直接将第一个元素和最后一个元素进行交换,然后从第一个元素开始进行向下调整至第n-1个原创 2022-01-13 00:47:36 · 215 阅读 · 0 评论 -
雪花算法笔记
雪花算法笔记:全局唯一id:64位的唯一时间戳第一位为041位为时间戳10位为机器id12位为bit序列号时间戳代表可以使用多长时间机器号代表可以同时使用的机器数量1024序列号为一毫秒可以有4096个时间戳运算:先将时间戳左移22位机器编号左移12位机器号不变将得到的三个01字符串进行或运算(只要有一个是1就是1)得到的id转化为10进制...原创 2022-01-13 00:09:52 · 209 阅读 · 0 评论 -
凯撒加密移位
将字符简单后移package sample.demo;/** * @author lh * @date 2021/12/29 12:38 */public class CaesarDemo { private static String encrypt(String clearText, int key) { char[] chars = clearText.toCharArray(); for (int i = 0; i < chars.len原创 2021-12-31 15:53:05 · 2868 阅读 · 0 评论 -
c语言考研题
c语言考研题第一题 public static void main(String[] args) { int count = 0; for (int i = 0; i < 100; i++) { for (int j = 0; j < 50; j++) { for (int k = 0; k < 20; k++) { if (i + 2 * j + 5 *原创 2021-09-18 22:19:45 · 344 阅读 · 0 评论 -
进制转换理解
进制转换理解案例:十进制转换为八进制void conversion(){ InitStack(S); scanf("%d",N); while(N){ Push(S,N%8); N=N/8; } while(!StackEmpty(S)){ Pop(S,e); printf("%d",e); }}//conversion原理:N=(N div d) * d + N mod d(div为整除,mod为求余)(1348)10=(2504)8N N div 8 N m原创 2021-09-18 17:41:38 · 391 阅读 · 0 评论 -
顺序查找中哨兵的作用
顺序查找中哨兵的作用len为数组长度没用哨兵的时候判断需要进行len这么多次,同时还要比较i与len同样len这么多次int search(int * a,int k,int len){ for(int i = 0; i <len ; i++) { if (a[i]==k) return i; } return -1;//返回-1查找失败 }使用哨兵后只需要判断l原创 2021-07-20 12:17:22 · 1826 阅读 · 0 评论 -
问题:循环赛日程表
问题:循环赛日程表偶然看到一篇文章写的这个,除看感觉很容易理解,细看还是很难理解,这里写下个人理解作为笔记设有n=2^k个运动员要进行网球循环赛。现要设计一个满足以下要求的比赛日程表:每个选手必须与其他n-1个选手各赛一次;每个选手一天只能赛一次;循环赛一共进行n-1天。按上述要求将比赛日程表设计成有n行和n-1列的表。在表中第i行和第j列处填入第i个选手在第j天遇到的选手。(无输入;输出一个日程表,二维数组表示)分析:按分治策略,可以将所有选手对分为两半,n个选手的比赛日程表就可以通过为n翻译 2021-07-10 16:00:32 · 236 阅读 · 0 评论 -
单链表反转
单链表反转两种方式(本文只介绍一下思路)1:通过栈的实现这个方法很容易理解,就头先压进去,然后依次压进去,然后又依次弹出来用代码实现思路:当前的指针(开始是头)不为空就进栈,然后指针后移,依次循环,直到后面为空的时候,就开始弹出,将当前指针前移,也就是指向原理链表的最后一个位置,然后弹出,将头指向他,然后指向下一个弹出的,然后当前指针移到下一个位置,然后当前指针的下一个指向下一个弹出的。都是基本的操作。2:通过三个指针的实现我们需要两个指针辅助:pre记录其前一个结点位置,好让该结点的next原创 2021-07-03 21:15:30 · 88 阅读 · 0 评论 -
压缩算法-哈夫曼编码
压缩算法-哈夫曼编码压缩算法顾名思义就是将大的文件压缩成小的文件本文介绍一下常见的压缩算法—哈夫曼编码哈夫曼编码介绍之前得先了解两个基本的概念哈夫曼树:哈夫曼树是一颗带权二叉树,且各节点得权值和最小比如一串字符串以及他们得编码如下编码:a:111 b:000 c:101 d:010字符串:abacddd编码后:111000111101010010010长27哈夫曼在编码的时候使用01统计各个字符出现的次数,出现最多的就将它的位置放在最上面,这样编码下来就可以最大的节约空间,同时只有原创 2021-07-03 14:16:20 · 524 阅读 · 0 评论 -
java实现部分常见排序算法
java实现部分常见排序算法希尔排序package example;public class ShellSort { public static void main(String[] args) { int[] arr = {5, 1, 7, 3, 1, 6, 9, 4}; shellSort(arr); for (int i : arr) { System.out.print(i + "\t"); }原创 2021-06-28 15:49:31 · 149 阅读 · 0 评论 -
金币银币算法面试题
金币银币算法面试题原题:(同学面试面来的题),如果有 20 个银币,和 1个金币,有A和B两人轮流按照如下规则来取:A先B后,每人每次只能取 1~4 枚,银币取完了后才能取金币(就是说不能同时取金银币),最后取到金币的人赢,问A第一次取多少可以保证稳赢。题目可以抽象成a + (Min + Max) * n + 1 = total.min=1,max=4,total=20,很明显得到a=4total=20可以很好的理解那么为什么是min+max乘n呢,因为A第一手拿了,要保证B只能拿最后的那一原创 2021-06-27 12:40:39 · 383 阅读 · 0 评论 -
爬楼梯问题
爬楼梯问题假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。类似于斐波拉契数列class Solution {public int climbStairs(int n) {if(n < 3){return n;}int[] nums = new int[n + 1];nums[1] = 1;nums[2] = 2;for(int i = 3; i <= n; i++){nu原创 2021-05-30 15:24:07 · 104 阅读 · 0 评论 -
ai五子棋算法优化-极大极小搜索-裁剪等
《算法设计与分析》课 程 报 告题 目 算法设计与分析学 院 计算机学院专 业 网络工程学生姓名 李浩学 号 201810420117 班级2018-1指导教师 袁飞2021 年 06月 1日Ai五子棋算法设计与分析专业:网络工程 学号:201810420117学生:李浩原创 2021-05-29 16:22:07 · 1448 阅读 · 1 评论 -
贪心算法——摇摆子序列问题
题目:一个整数序列,如果两个相邻元素的差恰好正负(负正)交替出现,则该序列呗成为摇摆序列,一个小于2个元素的序列直接为摇摆序列,给一个随机序列,求这个序列满足摇摆序列定义的最长子序列的长度。例如:序列[1,7,4,9,2,5],相邻元素的差(6,-3,5,-7,3),该序列为摇摆序列序列[1,4,7,2,5]相差(3,3,-5,3)不是摇摆序列这道题问题用个折线图就可以看的很明白,一次上下转折的两个端点就是序列中的点除了黑色的点其他都是子序列里面的点,一次状态里面的两个端点就是序列中的点,用ja原创 2021-03-27 22:27:58 · 683 阅读 · 0 评论