算法与数据结构
文章平均质量分 58
记录算法
Zeeland
全栈算法工程师 | 大模型创业 | LangChain Top Contributor | Promptulate founder | 资深Python开发者 |
Github: https://github.com/Undertone0809
展开
-
分治&暴力求解最近点对问题 + 时间性能量化分析
本文旨在讨论分治和暴力在求解最近点对问题时的时间性能问题,关于解题部分不做过多讲解,只附上相关代码。原创 2022-10-21 19:52:21 · 1327 阅读 · 0 评论 -
c语言结构体嵌套自身存在的问题
问题描述typedef struct{ A *data;}A;最初本人以这种形式构建结构体会发现,这种结构体的构建会出现问题,原因是因为A变量名的定义是在结构体定义结束之后才完成的,而结构体中定义的A这个时候还没有定义,所以这个结构体内无法识别到A问题前提1.为了在不在定义的时候使用struct A a而使用A a,则必须要使用typedef进行定义2.为了在结构体的内部嵌套自身因此以下只直接给出关于使用typedef定义的解决方案解决方案方式:在结构体定义之前先定义其type原创 2021-09-18 00:18:13 · 1522 阅读 · 0 评论 -
数位操作常见的几种操作及其解析
目录1.前言2.如何分解?2.1 字符串2.2 数学运算2.3 简短操作2.4 栈3.常见题型3.1 数位dp3.2 数位操作+桶排序思路3.3 数位反转4. 总结1.前言数位操作,就是说给你一个数n,要求你把当中的每一个位数取出来,然后再根据题目的具体情况添加额外的条件,常见的操作类型有:数位反转、去除前导0后导0、每个数字出现的次数等等。在很多题目中,比如在数位dp、高精度、一些子集问题中常常涉及到数位操作,因此,掌握几种常见的数位操作是很必要的选择,该文章将介绍本人常见的几种数位操作。2.如何原创 2021-04-17 11:44:44 · 924 阅读 · 2 评论 -
解析常见前导0与后导0操作(可直接调用)
一个double的2.0,如果想要输出2,怎么操作?//方法1public static void method(double n){ int mid = (int)n; if(mid == n){ System.out.println(mid);//将double转换为int就ok }}//方法2public static void method2(double n){ String mid =String.valueOf(n); // 去掉多余的0 mid = mid.rep原创 2021-04-11 19:34:54 · 2419 阅读 · 3 评论 -
《dfs》使用dfs解决迷宫最短路径问题 java
前言本文将阐述如何使用dfs算法解决迷宫问题代码部分class test{ /* 利用dfs算法计算迷宫问题的最小路径 设其最小的步数为min 其当前运行的步数为step */ static int endx,endy,min; static int a[][];//记录地图地形,1表示空地,2表示障碍物 static int v[][];//0表示未访问,1表示访问 public static void原创 2021-04-11 10:21:22 · 1686 阅读 · 3 评论 -
汇总几种常见的排序方法(java)
前言不同的排序方法对应着不同的时间复杂度,也对应着不同的应用场景,比如数据量较小的时候,我们可以直接采用冒泡排序和插入排序,但是数据量一大起来,冒泡排序O(n^2)的时间复杂度有显得有一些臃肿了。本文列出了几种常见的排序方法,并附上一些可能的应用场景。几种常见的排序下面是几种常见排序的时间复杂度冒泡排序和插入排序不多数,直接附上代码,属于最基础的排序冒泡排序//冒泡排序法的快速调用 public static int[] bubbleSort(int []arr){原创 2021-04-11 00:49:28 · 130 阅读 · 0 评论 -
贪心算法:洛谷P1803凌乱的yyy解析(java)
题目描述相关连接:https://www.luogu.com.cn/problem/P1803解析这道题对于java来说,第一思路应该是贪心算法,创建一个二维数组(或者创建两个数组),然后对结束时间进行排序(这种情况一般用冒泡排序),所以我刚开始是这么做的,附上代码:import java.util.Scanner;/** * @author :Zeeland * @date :Created in 2021/4/5 12:58 * @version: 1.0$ */public原创 2021-04-05 19:32:53 · 632 阅读 · 5 评论 -
双向链表:P1996约瑟夫问题的解决方法
题目题目链接:here这道题的思路应该不难,使用双向链表,假设我们输入10 3,一共10个人,我们把这10个人放进一个双向链表里面,遍历,设置count=1,一个一个匹配:刚开始是1号,1号的时候count!=3,所以把1号弹出,放到队尾部,count++,继续匹配,到count=3的时候,匹配到3号,3号弹出,放到2号数组中,一直持续这样的操作,直到双向链表中的所有元素都被弹出,最后遍历2号数组就可以得到答案了。java代码如下:import java.util.ArrayList;import原创 2021-03-17 21:56:41 · 302 阅读 · 0 评论 -
栈:P1149后缀表达式解析(java)
题目描述一道标准的模拟栈的题目,java中的stack、linkedlist都可以被使用,附上我的代码答案import java.util.Scanner;import java.util.Stack;/** * @author :Zeeland * @date :Created in 2021/3/10 17:38 * @version: 1.0$ */public class P1449 { public static void main(String[] args)原创 2021-03-17 17:57:38 · 191 阅读 · 0 评论 -
java LinkedList的用法解析(全面)
1.介绍public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.SerializableLinkedList的底层为一个双向链表,且LinkedList类实现了List和Deque,说明其兼具两者的属性,本文介绍LinkedList实现的大部分方法。双向链表实现的 List和原创 2021-03-09 22:32:06 · 1491 阅读 · 0 评论